aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Thomas Jost <schnouki@schnouki.net>2011-05-28 14:51:56 -0700
committerGravatar Carl Worth <cworth@cworth.org>2011-06-03 12:42:04 -0700
commitdacaaf3a07034ace8ba42be97dbc3141883e9823 (patch)
treeccda2d4bb67e352c5b5cdfef377247191143a73e
parent78138ec9aa70cba65ca2f7a0f045ead1be093383 (diff)
emacs: Cleaner interface when prompting for sender address
Most of the time, every entry in the list of identities has the same user name part. It can then be filled in automatically, and the user can only be prompted for the email address, which makes the interface much cleaner.
-rw-r--r--emacs/notmuch-mua.el33
1 files changed, 23 insertions, 10 deletions
diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index 556d2bf0..274c5dab 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -162,20 +162,33 @@ the From: header is already filled in by notmuch."
:group 'notmuch
:type 'boolean)
-(defun notmuch-mua-sender-collection ()
- (if notmuch-identities
- notmuch-identities
- (mapcar (lambda (address)
- (concat (notmuch-user-name) " <" address ">"))
- (cons (notmuch-user-primary-email) (notmuch-user-other-email)))))
-
(defvar notmuch-mua-sender-history nil)
(defun notmuch-mua-prompt-for-sender ()
(interactive)
- (let ((collection (notmuch-mua-sender-collection)))
- (ido-completing-read "Send mail From: " collection
- nil 'confirm nil 'notmuch-mua-sender-history (car collection))))
+ (let (name addresses one-name-only)
+ ;; If notmuch-identities is non-nil, check if there is a fixed user name.
+ (if notmuch-identities
+ (let ((components (mapcar 'mail-extract-address-components notmuch-identities)))
+ (setq name (caar components)
+ addresses (mapcar 'cadr components)
+ one-name-only (eval
+ (cons 'and
+ (mapcar (lambda (identity)
+ (string-equal name (car identity)))
+ components)))))
+ ;; If notmuch-identities is nil, use values from the notmuch configuration file.
+ (setq name (notmuch-user-name)
+ addresses (cons (notmuch-user-primary-email) (notmuch-user-other-email))
+ one-name-only t))
+ ;; Now prompt the user, either for an email address only or for a full identity.
+ (if one-name-only
+ (let ((address
+ (ido-completing-read (concat "Sender address for " name ": ") addresses
+ nil nil nil 'notmuch-mua-sender-history (car addresses))))
+ (concat name " <" address ">"))
+ (ido-completing-read "Send mail From: " notmuch-identities
+ nil nil nil 'notmuch-mua-sender-history (car notmuch-identities)))))
(defun notmuch-mua-new-mail (&optional prompt-for-sender)
"Invoke the notmuch mail composition window.