Customizing notmuch-search-line-faces to color lines in search result according to tags has the effect that the color overrides other faces set for the line. This is usually what the user wants with the exception that it also colors non-matching authors and it is then not possible to visually distinguish between matching and non-matching authors.
This patch changes the way how are the faces specified in notmuch-search-line-faces applied to the search results. In particular, instead of adding an overlay for the whole line, the existing faces of the line are replaced with what is given in notmuch-search-line-faces. The only exception is that notmuch-search-non-matching-authors face is never replaced. Signed-off-by: Michal Sojka <sojk...@fel.cvut.cz> --- emacs/notmuch.el | 20 +++++++++++++++++--- 1 files changed, 17 insertions(+), 3 deletions(-) diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 42619b2..d0fb834 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -593,17 +593,31 @@ matching will be applied." :type '(alist :key-type (string) :value-type (list)) :group 'notmuch) +(defun notmuch-search-set-line-face (start end face) + "Change face propery to value FACE expect for non-matching authors." + (save-excursion + (save-restriction + (narrow-to-region start end) + (goto-char (point-min)) + (let ((fstart (point)) + fend) + (while (< fstart (point-max)) + (setq fend (or (next-single-property-change fstart 'face) + (point-max))) + (when (not (eq (get-text-property fstart 'face) 'notmuch-search-non-matching-authors)) + (put-text-property fstart fend 'face face)) + (setq fstart fend)))))) + (defun notmuch-search-color-line (start end line-tag-list) "Colorize lines in notmuch-show based on tags" (if notmuch-search-line-faces - (let ((overlay (make-overlay start end)) - (tags-faces (copy-alist notmuch-search-line-faces))) + (let ((tags-faces (copy-alist notmuch-search-line-faces))) (while tags-faces (let* ((tag-face (car tags-faces)) (tag (car tag-face)) (face (cdr tag-face))) (cond ((member tag line-tag-list) - (overlay-put overlay 'face face) + (notmuch-search-set-line-face start end face) (setq tags-faces nil)) (t (setq tags-faces (cdr tags-faces))))))))) -- tg: (f117d80..) t/do-not-colorize-non-matching-authors-by-tag (depends on: master) _______________________________________________ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch