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 45FEA431FBC for ; Sat, 1 Dec 2012 12:44:51 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none] 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 iP74RVSn4QLW for ; Sat, 1 Dec 2012 12:44:46 -0800 (PST) Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34]) by olra.theworths.org (Postfix) with ESMTP id 54CBD431FAF for ; Sat, 1 Dec 2012 12:44:46 -0800 (PST) Received: from guru.guru-group.fi (localhost [IPv6:::1]) by guru.guru-group.fi (Postfix) with ESMTP id 1877B1000D0; Sat, 1 Dec 2012 22:44:42 +0200 (EET) From: Tomi Ollila To: Mark Walters , notmuch@notmuchmail.org Subject: Re: [PATCH v2] contrib: pick: use notmuch-clean-address In-Reply-To: <1354384922-14237-1-git-send-email-markwalters1009@gmail.com> References: <1354384922-14237-1-git-send-email-markwalters1009@gmail.com> User-Agent: Notmuch/0.14+116~g29fcdb5 (http://notmuchmail.org) Emacs/24.2.1 (x86_64-unknown-linux-gnu) X-Face: HhBM'cA~ MIME-Version: 1.0 Content-Type: text/plain 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: Sat, 01 Dec 2012 20:44:51 -0000 On Sat, Dec 01 2012, Mark Walters wrote: > Now notmuch-clean-address is split out in show pick can use that (with a small > wrapper). > --- > A neater version following Tomi's suggestion. LGTM (again :). Tomi > contrib/notmuch-pick/notmuch-pick.el | 63 ++++----------------------------- > 1 files changed, 8 insertions(+), 55 deletions(-) > > diff --git a/contrib/notmuch-pick/notmuch-pick.el b/contrib/notmuch-pick/notmuch-pick.el > index eca1cba..a5005be 100644 > --- a/contrib/notmuch-pick/notmuch-pick.el > +++ b/contrib/notmuch-pick/notmuch-pick.el > @@ -35,7 +35,6 @@ > (declare-function notmuch-show "notmuch-show" (&rest args)) > (declare-function notmuch-tag "notmuch" (query &rest tags)) > (declare-function notmuch-show-strip-re "notmuch-show" (subject)) > -(declare-function notmuch-show-clean-address "notmuch-show" (parsed-address)) > (declare-function notmuch-show-spaces-n "notmuch-show" (n)) > (declare-function notmuch-read-query "notmuch" (prompt)) > (declare-function notmuch-read-tag-changes "notmuch" (&optional initial-input &rest search-terms)) > @@ -528,62 +527,16 @@ than only the current message." > (message (format "Command '%s' exited abnormally with code %d" > shell-command exit-code))))))) > > -;; Shamelessly stolen from notmuch-show.el: should be unified. > (defun notmuch-pick-clean-address (address) > - "Try to clean a single email ADDRESS for display. Return > + "Try to clean a single email ADDRESS for display. Return > +AUTHOR_NAME if present, otherwise return AUTHOR_EMAIL. Return > unchanged ADDRESS if parsing fails." > - (condition-case nil > - (let (p-name p-address) > - ;; It would be convenient to use `mail-header-parse-address', > - ;; but that expects un-decoded mailbox parts, whereas our > - ;; mailbox parts are already decoded (and hence may contain > - ;; UTF-8). Given that notmuch should handle most of the awkward > - ;; cases, some simple string deconstruction should be sufficient > - ;; here. > - (cond > - ;; "User " style. > - ((string-match "\\(.*\\) <\\(.*\\)>" address) > - (setq p-name (match-string 1 address) > - p-address (match-string 2 address))) > - > - ;; "" style. > - ((string-match "<\\(.*\\)>" address) > - (setq p-address (match-string 1 address))) > - > - ;; Everything else. > - (t > - (setq p-address address))) > - > - (when p-name > - ;; Remove elements of the mailbox part that are not relevant for > - ;; display, even if they are required during transport: > - ;; > - ;; Backslashes. > - (setq p-name (replace-regexp-in-string "\\\\" "" p-name)) > - > - ;; Outer single and double quotes, which might be nested. > - (loop > - with start-of-loop > - do (setq start-of-loop p-name) > - > - when (string-match "^\"\\(.*\\)\"$" p-name) > - do (setq p-name (match-string 1 p-name)) > - > - when (string-match "^'\\(.*\\)'$" p-name) > - do (setq p-name (match-string 1 p-name)) > - > - until (string= start-of-loop p-name))) > - > - ;; If the address is 'foo@bar.com ' then show just > - ;; 'foo@bar.com'. > - (when (string= p-name p-address) > - (setq p-name nil)) > - > - ;; If we have a name return that otherwise return the address. > - (if (not p-name) > - p-address > - p-name)) > - (error address))) > + (let* ((clean-address (notmuch-clean-address address)) > + (p-address (car clean-address)) > + (p-name (cdr clean-address))) > + > + ;; If we have a name return that otherwise return the address. > + (or p-name p-address))) > > (defun notmuch-pick-insert-field (field format-string msg) > (let* ((headers (plist-get msg :headers)) > -- > 1.7.9.1 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch