emacs: Show cleaner `From:' addresses in the summary line.
[notmuch] / emacs / notmuch-show.el
index 9c174e25e85576640a549f78924f6377bd91a566..ed7037a15983437819d40055653e597fa9ffd7a4 100644 (file)
@@ -222,12 +222,30 @@ same as that of the previous message."
                                             'face 'notmuch-tag-face)
                                 ")"))))))
 
+(defun notmuch-show-clean-address (address)
+  "Clean a single email address for display."
+  (let* ((parsed (mail-header-parse-address address))
+        (address (car parsed))
+        (name (cdr parsed)))
+    ;; Remove double quotes. They might be required during transport,
+    ;; but we don't need to see them.
+    (when name
+      (setq name (replace-regexp-in-string "\"" "" name)))
+    ;; If the address is 'foo@bar.com <foo@bar.com>' then show just
+    ;; 'foo@bar.com'.
+    (when (string= name address)
+      (setq name nil))
+
+    (if (not name)
+       address
+      (concat name " <" address ">"))))
+
 (defun notmuch-show-insert-headerline (headers date tags depth)
   "Insert a notmuch style headerline based on HEADERS for a
 message at DEPTH in the current thread."
   (let ((start (point)))
     (insert (notmuch-show-spaces-n depth)
-           (plist-get headers :From)
+           (notmuch-show-clean-address (plist-get headers :From))
            " ("
            date
            ") ("