Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id DB865429E2D for ; Fri, 27 May 2011 02:15:24 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: -0.1 X-Spam-Level: X-Spam-Status: No, score=-0.1 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QUaziOEaIq0n for ; Fri, 27 May 2011 02:15:24 -0700 (PDT) Received: from ks3536.kimsufi.com (schnouki.net [87.98.217.222]) by olra.theworths.org (Postfix) with ESMTP id D35BE429E2B for ; Fri, 27 May 2011 02:15:23 -0700 (PDT) Received: from localhost.localdomain (thor.loria.fr [152.81.12.250]) by ks3536.kimsufi.com (Postfix) with ESMTPSA id D459D6A06AD; Fri, 27 May 2011 11:15:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=schnouki.net; s=key-schnouki; t=1306487722; bh=4ZGWJpwZPAz5OkQ8JPB5PqQoStQFjzjJ3rs6zrr6hOc=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References; b=UuqqhFuxp/k6pioi/PTBKZSyKB5A2wVeZ87OXzoojuoeKnODm7t8UhFbBc6D8HvtZ qUMig7IMtvZ3VGImgMQJFybePyxuHkrcfn9u+EWHXCAQQwWtbtAkDZJb0LXbn4o4uG XuShxYaDUyNmJzNDtv7NeCMo95EPfXdF702ceahA= From: Thomas Jost To: Jameson Graef Rollins , Carl Worth , Stewart Smith , notmuch Subject: [PATCH 2/2] emacs: Cleaner interface when prompting for sender address Date: Fri, 27 May 2011 11:15:00 +0200 Message-Id: <1306487700-21358-2-git-send-email-schnouki@schnouki.net> X-Mailer: git-send-email 1.7.5.2 In-Reply-To: <1306487700-21358-1-git-send-email-schnouki@schnouki.net> References: <87mxi9ytvt.fsf@servo.factory.finestructure.net> <1306487700-21358-1-git-send-email-schnouki@schnouki.net> X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 May 2011 09:15:25 -0000 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. --- Hi Jameson, Once again, a very good suggestion. I had doubts at first (because I sometimes send mails using a nickname or on behalf of a group using that group's name), but then I noticed I already had only one name in notmuch-identities :) So here's a patch. It handle 3 different cases: - notmuch-identities is not set --> only one name - notmuch-identities set with only one name - notmuch-identities set with several different names I tried to make it as compact and readable as possible, so the first two cases are handled by a single call to ido-completing-read. But there is probably still room for improvements: reviews, comments and suggestions are welcome. Regards, Thomas emacs/notmuch-mua.el | 33 +++++++++++++++++++++++---------- 1 files changed, 23 insertions(+), 10 deletions(-) diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el index 556d2bf..274c5da 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. -- 1.7.5.2