diff options
author | David Edmondson <dme@dme.org> | 2010-04-29 07:52:22 +0100 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2010-06-03 16:53:32 -0700 |
commit | 106f9862d1c2671aeb451fa2e607984b007775ca (patch) | |
tree | 8fefafda1c9b3d469dea2c6eb0222279f4bb5b53 | |
parent | f6ce820a21d419362a3ec883740e12b000f153ac (diff) |
emacs: Display non-matching authors with a different face.
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.
-rw-r--r-- | emacs/notmuch.el | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 57e11400..c4f4b295 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -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") |