This patch uses the new --from option to notmuch reply to allow it to prompt the user for the From: address in cases when the cli does not know the "correct" from address. If the cli does not it either uses the users default address or, if notmuch-always-prompt-for-sender is set, prompts the user. --- emacs/notmuch-mua.el | 47 ++++++++++++++++++++++++++++------------------- 1 files changed, 28 insertions(+), 19 deletions(-) diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el index 41f82c2..36e62f9 100644 --- a/emacs/notmuch-mua.el +++ b/emacs/notmuch-mua.el @@ -51,6 +51,24 @@ list." ;; +(defcustom notmuch-identities nil + "Identities that can be used as the From: address when composing a new message. + +If this variable is left unset, then a list will be constructed from the +name and addresses configured in the notmuch configuration file." + :type '(repeat string) + :group 'notmuch-send) + +(defcustom notmuch-always-prompt-for-sender nil + "Always prompt for the From: address when composing or forwarding a message. + +This is not taken into account when replying to a message, because in that case +the From: header is already filled in by notmuch." + :type 'boolean + :group 'notmuch-send) + +(defvar notmuch-mua-sender-history nil) + (defun notmuch-mua-user-agent-full () "Generate a `User-Agent:' string suitable for notmuch." (concat (notmuch-mua-user-agent-notmuch) @@ -75,7 +93,7 @@ list." (defun notmuch-mua-reply (query-string &optional sender reply-all) (let (headers body - (args '("reply"))) + (args '("reply" "--from=fallback-received"))) (if notmuch-show-process-crypto (setq args (append args '("--decrypt")))) (if reply-all @@ -99,6 +117,15 @@ list." ;; If sender is non-nil, set the From: header to its value. (when sender (mail-header-set 'from sender headers)) + ;; If we do not have a From: header yet it means that + ;; notmuch-reply.c was not able to make a useful guess so we fill + ;; it in ourselves. + (when (string= "" (mail-header 'from headers)) + (if notmuch-always-prompt-for-sender + (setq sender (notmuch-mua-prompt-for-sender)) + (setq sender (concat + (notmuch-user-name) " <" (notmuch-user-primary-email) ">"))) + (mail-header-set 'from sender headers)) (let ;; Overlay the composition window on that being used to read ;; the original message. @@ -153,24 +180,6 @@ OTHER-ARGS are passed through to `message-mail'." (message-goto-to)) -(defcustom notmuch-identities nil - "Identities that can be used as the From: address when composing a new message. - -If this variable is left unset, then a list will be constructed from the -name and addresses configured in the notmuch configuration file." - :type '(repeat string) - :group 'notmuch-send) - -(defcustom notmuch-always-prompt-for-sender nil - "Always prompt for the From: address when composing or forwarding a message. - -This is not taken into account when replying to a message, because in that case -the From: header is already filled in by notmuch." - :type 'boolean - :group 'notmuch-send) - -(defvar notmuch-mua-sender-history nil) - (defun notmuch-mua-prompt-for-sender () (interactive) (let (name addresses one-name-only) -- 1.7.2.3