[notmuch] [PATCH] notmuch.el: colorize lines in notmuch-search based on thread tags.

2010-02-07 Thread Aneesh Kumar K. V
On Thu, 04 Feb 2010 07:07:26 -0500, Jameson Rollins  wrote:
> Arbitrary font faces can be specified for given thread tags.  By
> default, no coloring is applied.  To specify coloring, place something
> like this in your .emacs:
> 
> (setq notmuch-search-line-faces '(("delete" . '(:foreground "red"))
>   ("unread" . '(:foreground "green"
> 
> Order matters: line faces listed first will take precedence (in the
> example above, a thread tagged both "delete" and "unread" will be
> colored red, since the "delete" face is listed before the "unread").


Doesn't 92c4dcc641e9dfb5f65026ebae5cedc8eb1d9e21 help you achive
something similar ?

-aneesh


[notmuch] [PATCH] notmuch.el: colorize lines in notmuch-search based on thread tags.

2010-02-07 Thread Aaron Ecay
--- 2010ko Otsailak 7an, "Aneesh Kumar K. V"-ek idatzi zuen:
> Doesn't 92c4dcc641e9dfb5f65026ebae5cedc8eb1d9e21 help you achive something
> similar ?

That commit allows colors to be applied to the tag name only, whereas this
patch applies the color to the whole line.  Which method(s) notmuch should
support is debatable, of course.  Mutt does whole-line coloring, FWIW.

I should also point out that tag-based coloring is problematic in the current
emacs interface, wherein long subjects can push the tags off the right side of
the window.  That is arguably a bug, but until it is fixed the utility of
tag-only coloring is limited.

Aaron


Re: [notmuch] [PATCH] notmuch.el: colorize lines in notmuch-search based on thread tags.

2010-02-07 Thread Aaron Ecay
--- 2010ko Otsailak 7an, Aneesh Kumar K. V-ek idatzi zuen:
 Doesn't 92c4dcc641e9dfb5f65026ebae5cedc8eb1d9e21 help you achive something
 similar ?

That commit allows colors to be applied to the tag name only, whereas this
patch applies the color to the whole line.  Which method(s) notmuch should
support is debatable, of course.  Mutt does whole-line coloring, FWIW.

I should also point out that tag-based coloring is problematic in the current
emacs interface, wherein long subjects can push the tags off the right side of
the window.  That is arguably a bug, but until it is fixed the utility of
tag-only coloring is limited.

Aaron
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[notmuch] [PATCH] notmuch.el: colorize lines in notmuch-search based on thread tags.

2010-02-04 Thread Jameson Rollins
Arbitrary font faces can be specified for given thread tags.  By
default, no coloring is applied.  To specify coloring, place something
like this in your .emacs:

(setq notmuch-search-line-faces '(("delete" . '(:foreground "red"))
  ("unread" . '(:foreground "green"

Order matters: line faces listed first will take precedence (in the
example above, a thread tagged both "delete" and "unread" will be
colored red, since the "delete" face is listed before the "unread").
---
 notmuch.el |   33 -
 1 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index a21c6a6..4f8840a 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -1203,6 +1203,35 @@ This function advances the next thread when finished."
(insert (format " (process returned %d)" 
exit-status)))
(insert "\n"))

+(defcustom notmuch-search-line-faces nil
+  "Tag/face mapping for line highlighting in notmuch-search.
+
+Here is an example of how to color search results based on tags.
+(the following text would be placed in your ~/.emacs file):
+
+(setq notmuch-search-line-faces '((\"delete\" . '(:foreground \"red\"))
+ (\"unread\" . '(:foreground \"green\"
+
+Order matters: for lines with multiple tags, the the first
+matching will be applied."
+  :type '(alist :key-type (string) :value-type (list))
+  :group 'notmuch)
+
+(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)))
+   (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)
+  (setq tags-faces nil))
+ (t
+  (setq tags-faces (cdr tags-faces)
+
 (defun notmuch-search-process-filter (proc string)
   "Process and filter the output of \"notmuch search\""
   (let ((buffer (process-buffer proc)))
@@ -1220,12 +1249,14 @@ This function advances the next thread when finished."
   (authors (match-string 4 string))
   (authors-length (length authors))
   (subject (match-string 5 string))
-  (tags (match-string 6 string)))
+  (tags (match-string 6 string))
+  (tag-list (if tags (save-match-data (split-string 
tags)
  (if (> authors-length 40)
  (set 'authors (concat (substring authors 0 (- 40 3)) 
"...")))
  (goto-char (point-max))
  (let ((beg (point-marker)))
(insert (format "%s %-7s %-40s %s (%s)\n" date count 
authors subject tags))
+   (notmuch-search-color-line beg (point-marker) tag-list)
(put-text-property beg (point-marker) 
'notmuch-search-thread-id thread-id)
(put-text-property beg (point-marker) 
'notmuch-search-authors authors)
(put-text-property beg (point-marker) 
'notmuch-search-subject subject))
-- 
1.6.5

-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: