]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch.el
emacs: Set the `face' property rather than `font-lock-face'.
[notmuch] / emacs / notmuch.el
index 488458af98bf516cd55a712ca45567caa49a11e7..21c08c121ccb980c50733b47daf84240643ad6cd 100644 (file)
@@ -56,6 +56,7 @@
 (require 'notmuch-mua)
 (require 'notmuch-hello)
 (require 'notmuch-maildir-fcc)
+(require 'notmuch-message)
 
 (defcustom notmuch-search-result-format
   `(("date" . "%s ")
@@ -296,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.
@@ -426,7 +438,7 @@ and will also appear in a buffer named \"*Notmuch errors*\"."
       (let ((end (point)))
        (delete-region beg end)
        (insert (propertize (mapconcat  'identity tags " ")
-                           'font-lock-face 'notmuch-tag-face))))))
+                           'face 'notmuch-tag-face))))))
 
 (defun notmuch-search-get-tags ()
   (save-excursion
@@ -575,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")
@@ -582,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")