]> git.notmuchmail.org Git - notmuch/commitdiff
emacs: Display non-matching authors with a different face.
authorDavid Edmondson <dme@dme.org>
Thu, 29 Apr 2010 06:52:22 +0000 (07:52 +0100)
committerCarl Worth <cworth@cworth.org>
Thu, 3 Jun 2010 23:53:32 +0000 (16:53 -0700)
In search mode some messages don't match the search criteria. Show
their authors names with a different face - generally darker than
those that do match.

emacs/notmuch.el

index 57e11400a526cf4b81433430d1ce0f65245f989d..c4f4b295aa8759e1c7527a439a3610e85fb8e1ad 100644 (file)
@@ -297,6 +297,17 @@ For a mouse binding, return nil."
   "Notmuch search mode face used to highligh tags."
   :group 'notmuch)
 
+(defface notmuch-search-non-matching-authors
+  '((((class color)
+      (background dark))
+     (:foreground "grey30"))
+    (((class color)
+      (background light))
+     (:foreground "grey60"))
+    (t (:italic t)))
+  "Face used in search mode for authors not matching the query."
+  :group 'notmuch)
+
 ;;;###autoload
 (defun notmuch-search-mode ()
   "Major mode displaying results of a notmuch search.
@@ -576,6 +587,23 @@ matching will be applied."
                  (t
                   (setq tags-faces (cdr tags-faces)))))))))
 
+(defun notmuch-search-insert-authors (format-string authors)
+  (insert (let* ((formatted-sample (format format-string ""))
+                (formatted-authors (format format-string authors))
+                (truncated-string
+                 (if (> (length formatted-authors)
+                        (length formatted-sample))
+                     (concat (substring authors 0 (- (length formatted-sample) 4)) "... ")
+                   formatted-authors)))
+           ;; Need to save the match data to avoid interfering with
+           ;; `notmuch-search-process-filter'.
+           (save-match-data
+             (if (string-match "\\(.*\\)|\\(..*\\)" truncated-string)
+                 (concat (match-string 1 truncated-string) ","
+                         (propertize (match-string 2 truncated-string)
+                                     'face 'notmuch-search-non-matching-authors))
+               truncated-string)))))
+
 (defun notmuch-search-insert-field (field date count authors subject tags)
   (cond
    ((string-equal field "date")
@@ -583,13 +611,7 @@ matching will be applied."
    ((string-equal field "count")
     (insert (format (cdr (assoc field notmuch-search-result-format)) count)))
    ((string-equal field "authors")
-    (insert (let* ((format-string (cdr (assoc field notmuch-search-result-format)))
-                  (formatted-sample (format format-string ""))
-                  (formatted-authors (format format-string authors)))
-             (if (> (length formatted-authors)
-                    (length formatted-sample))
-                 (concat (substring authors 0 (- (length formatted-sample) 4)) "... ")
-               formatted-authors))))
+    (notmuch-search-insert-authors (cdr (assoc field notmuch-search-result-format)) authors))
    ((string-equal field "subject")
     (insert (format (cdr (assoc field notmuch-search-result-format)) subject)))
    ((string-equal field "tags")