mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 04:18:08 +01:00
emacs: Let the user choose where to compose new mails
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@finestructure.net>
This commit is contained in:
parent
f6c170fabc
commit
832fd1a7a6
1 changed files with 43 additions and 2 deletions
|
@ -37,6 +37,26 @@
|
||||||
:group 'notmuch-send
|
:group 'notmuch-send
|
||||||
:group 'notmuch-hooks)
|
:group 'notmuch-hooks)
|
||||||
|
|
||||||
|
(defcustom notmuch-mua-compose-in 'current-window
|
||||||
|
(concat
|
||||||
|
"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."
|
||||||
|
(when (< emacs-major-version 24)
|
||||||
|
" Due to a known bug in Emacs 23, you should not set
|
||||||
|
this to `new-window' if `message-kill-buffer-on-exit' is
|
||||||
|
disabled: this would result in an incorrect behavior."))
|
||||||
|
:group 'notmuch-send
|
||||||
|
: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
|
(defcustom notmuch-mua-user-agent-function 'notmuch-mua-user-agent-full
|
||||||
"Function used to generate a `User-Agent:' string. If this is
|
"Function used to generate a `User-Agent:' string. If this is
|
||||||
`nil' then no `User-Agent:' will be generated."
|
`nil' then no `User-Agent:' will be generated."
|
||||||
|
@ -56,6 +76,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 ()
|
(defun notmuch-mua-user-agent-full ()
|
||||||
"Generate a `User-Agent:' string suitable for notmuch."
|
"Generate a `User-Agent:' string suitable for notmuch."
|
||||||
(concat (notmuch-mua-user-agent-notmuch)
|
(concat (notmuch-mua-user-agent-notmuch)
|
||||||
|
@ -157,7 +194,8 @@ list."
|
||||||
collect pair)))
|
collect pair)))
|
||||||
(notmuch-mua-mail (plist-get reply-headers :To)
|
(notmuch-mua-mail (plist-get reply-headers :To)
|
||||||
(plist-get reply-headers :Subject)
|
(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
|
;; Insert the message body - but put it in front of the signature
|
||||||
;; if one is present
|
;; if one is present
|
||||||
|
@ -191,6 +229,7 @@ list."
|
||||||
(set-buffer-modified-p nil))
|
(set-buffer-modified-p nil))
|
||||||
|
|
||||||
(defun notmuch-mua-forward-message ()
|
(defun notmuch-mua-forward-message ()
|
||||||
|
(funcall (notmuch-mua-get-switch-function) (current-buffer))
|
||||||
(message-forward)
|
(message-forward)
|
||||||
|
|
||||||
(when notmuch-mua-user-agent-function
|
(when notmuch-mua-user-agent-function
|
||||||
|
@ -200,6 +239,7 @@ list."
|
||||||
(message-sort-headers)
|
(message-sort-headers)
|
||||||
(message-hide-headers)
|
(message-hide-headers)
|
||||||
(set-buffer-modified-p nil)
|
(set-buffer-modified-p nil)
|
||||||
|
(notmuch-mua-maybe-set-window-dedicated)
|
||||||
|
|
||||||
(message-goto-to))
|
(message-goto-to))
|
||||||
|
|
||||||
|
@ -222,6 +262,7 @@ OTHER-ARGS are passed through to `message-mail'."
|
||||||
(message-sort-headers)
|
(message-sort-headers)
|
||||||
(message-hide-headers)
|
(message-hide-headers)
|
||||||
(set-buffer-modified-p nil)
|
(set-buffer-modified-p nil)
|
||||||
|
(notmuch-mua-maybe-set-window-dedicated)
|
||||||
|
|
||||||
(message-goto-to))
|
(message-goto-to))
|
||||||
|
|
||||||
|
@ -278,7 +319,7 @@ the From: address first."
|
||||||
(let ((other-headers
|
(let ((other-headers
|
||||||
(when (or prompt-for-sender notmuch-always-prompt-for-sender)
|
(when (or prompt-for-sender notmuch-always-prompt-for-sender)
|
||||||
(list (cons 'From (notmuch-mua-prompt-for-sender))))))
|
(list (cons 'From (notmuch-mua-prompt-for-sender))))))
|
||||||
(notmuch-mua-mail nil nil other-headers)))
|
(notmuch-mua-mail nil nil other-headers nil (notmuch-mua-get-switch-function))))
|
||||||
|
|
||||||
(defun notmuch-mua-new-forward-message (&optional prompt-for-sender)
|
(defun notmuch-mua-new-forward-message (&optional prompt-for-sender)
|
||||||
"Invoke the notmuch message forwarding window.
|
"Invoke the notmuch message forwarding window.
|
||||||
|
|
Loading…
Reference in a new issue