[PATCH] emacs: Let the user choose where to compose new mails
Tomi Ollila
tomi.ollila at iki.fi
Sat Apr 28 00:23:05 PDT 2012
On Sat, Apr 14 2012, Jameson Graef Rollins <jrollins at finestructure.net> wrote:
> From: Thomas Jost <schnouki at schnouki.net>
>
> Introduce a new defcustom notmuch-mua-compose-in that allows users to
> specify where new mails are composed., either in the current window or
> in a new window or frame.
>
> Signed-off-by: Jameson Rollins <jrollins at finestructure.net>
> ---
> This is a rebase of this original patch against the current master,
> with an expanded commit message.
+1
Tomi
>
> emacs/notmuch-mua.el | 42 +++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 39 insertions(+), 3 deletions(-)
>
> diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
> index 87bd88d..a96ac3d 100644
> --- a/emacs/notmuch-mua.el
> +++ b/emacs/notmuch-mua.el
> @@ -36,6 +36,21 @@
> :group 'notmuch-send
> :group 'notmuch-hooks)
>
> +(defcustom notmuch-mua-compose-in 'current-window
> + "Where to create the mail buffer used to compose a new message.
> + Possible values are `current-window' (default), `new-window'
> + and `new-frame'. If set to `current-window', the mail buffer
> + will be displayed in the current window, so the old buffer will
> + be restored when the mail buffer is killed. If set to
> + `new-window' or `new-frame', the mail buffer will be displayed
> + in a new window/frame that will be destroyed when the buffer is
> + killed. You may want to customize `message-kill-buffer-on-exit'
> + accordingly."
> + :group 'notmuch
> + :type '(choice (const :tag "Compose in the current window" current-window)
> + (const :tag "Compose mail in a new window" new-window)
> + (const :tag "Compose mail in a new frame" new-frame)))
> +
> (defcustom notmuch-mua-user-agent-function 'notmuch-mua-user-agent-full
> "Function used to generate a `User-Agent:' string. If this is
> `nil' then no `User-Agent:' will be generated."
> @@ -55,6 +70,23 @@ list."
>
> ;;
>
> +(defun notmuch-mua-get-switch-function ()
> + "Get a switch function according to `notmuch-mua-compose-in'."
> + (cond ((eq notmuch-mua-compose-in 'current-window)
> + 'switch-to-buffer)
> + ((eq notmuch-mua-compose-in 'new-window)
> + 'switch-to-buffer-other-window)
> + ((eq notmuch-mua-compose-in 'new-frame)
> + 'switch-to-buffer-other-frame)
> + (t (error "Invalid value for `notmuch-mua-compose-in'"))))
> +
> +(defun notmuch-mua-maybe-set-window-dedicated ()
> + "Set the selected window as dedicated according to
> +`notmuch-mua-compose-in'."
> + (when (or (eq notmuch-mua-compose-in 'new-frame)
> + (eq notmuch-mua-compose-in 'new-window))
> + (set-window-dedicated-p (selected-window) t)))
> +
> (defun notmuch-mua-user-agent-full ()
> "Generate a `User-Agent:' string suitable for notmuch."
> (concat (notmuch-mua-user-agent-notmuch)
> @@ -148,7 +180,8 @@ list."
> collect pair)))
> (notmuch-mua-mail (plist-get reply-headers :To)
> (plist-get reply-headers :Subject)
> - (notmuch-headers-plist-to-alist reply-headers))))
> + (notmuch-headers-plist-to-alist reply-headers)
> + nil (notmuch-mua-get-switch-function))))
>
> ;; Insert the message body - but put it in front of the signature
> ;; if one is present
> @@ -186,6 +219,7 @@ list."
> (set-buffer-modified-p nil))
>
> (defun notmuch-mua-forward-message ()
> + (funcall (notmuch-mua-get-switch-function) (current-buffer))
> (message-forward)
>
> (when notmuch-mua-user-agent-function
> @@ -195,6 +229,7 @@ list."
> (message-sort-headers)
> (message-hide-headers)
> (set-buffer-modified-p nil)
> + (notmuch-mua-maybe-set-window-dedicated)
>
> (message-goto-to))
>
> @@ -217,6 +252,7 @@ OTHER-ARGS are passed through to `message-mail'."
> (message-sort-headers)
> (message-hide-headers)
> (set-buffer-modified-p nil)
> + (notmuch-mua-maybe-set-window-dedicated)
>
> (message-goto-to))
>
> @@ -272,8 +308,8 @@ the From: address first."
> (interactive "P")
> (let ((other-headers
> (when (or prompt-for-sender notmuch-always-prompt-for-sender)
> - (list (cons 'From (notmuch-mua-prompt-for-sender))))))
> - (notmuch-mua-mail nil nil other-headers)))
> + (list (cons "From" (notmuch-mua-prompt-for-sender))))))
> + (notmuch-mua-mail nil nil other-headers nil (notmuch-mua-get-switch-function))))
>
> (defun notmuch-mua-new-forward-message (&optional prompt-for-sender)
> "Invoke the notmuch message forwarding window.
> --
> 1.7.9.5
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch
More information about the notmuch
mailing list