From: Aneesh Kumar K.V <aneesh.ku...@gmail.com>

This patch helps in customizing search result display
similar to mutt's index_format. The customization is done
by defining an alist as below

(setq notmuch-search-result-format '(("date" . "%s ")
                                     ("authors" . "%-40s ")
                                     ("subject" . "%s ")
                                     ("tags" . "(%s)")))

The supported keywords are date, count, authors, subject and tags.
tags need to be last element for it to get highlighted by notmuch-tag-face.

Signed-off-by: Aneesh Kumar K.V <aneesh.ku...@gmail.com>
---
 notmuch.el |   31 ++++++++++++++++++++++++++++++-
 1 files changed, 30 insertions(+), 1 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 6a0c119..cbee989 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -125,6 +125,13 @@ pattern can still test against the entire line).")
 (defvar notmuch-show-body-read-visible nil)
 (defvar notmuch-show-citations-visible nil)
 (defvar notmuch-show-signatures-visible nil)
+(defcustom notmuch-search-result-format nil
+  "Search result formating. Supported fields are
+       date, count, authors, subject, tags
+ex: \(\(\"date\" \"%s\"\) \(\"count\" \"%-7s\) \(\"authors\" \"%-40s\"\) 
\(\"subject %s\"\) \(\"tag\" \"(%s)\"\)\)"
+:type '(alist :key-type (string) :value-type (string))
+:group 'notmuch)
+
 (defvar notmuch-show-headers-visible nil)
 
 ; XXX: This should be a generic function in emacs somewhere, not here
@@ -1117,6 +1124,26 @@ This function advances point to the next line when 
finished."
                            (insert (format " (process returned %d)" 
exit-status)))
                        (insert "\n"))))))))))
 
+(defun insert_field (field date count authors subject tags)
+(if (string-equal field "date")
+    (insert (format (cdr (assoc field notmuch-search-result-format)) date))
+  (if (string-equal field "count")
+    (insert (format (cdr (assoc field notmuch-search-result-format)) count))
+  (if (string-equal field "authors")
+    (insert (format (cdr (assoc field notmuch-search-result-format)) authors))
+  (if (string-equal field "subject")
+      (insert (format (cdr (assoc field notmuch-search-result-format)) 
subject))
+  (if (string-equal field "tags")
+    (insert (format (cdr (assoc field notmuch-search-result-format)) tags)))
+)))))
+
+(defun notmuch-search-show-result (date count authors subject tags)
+(let ((fields) (field))
+  (setq fields (mapcar 'car notmuch-search-result-format))
+  (loop for field in  fields
+       do (insert_field field date count authors subject tags)))
+(insert "\n"))
+
 (defun notmuch-search-process-filter (proc string)
   "Process and filter the output of \"notmuch search\""
   (let ((buffer (process-buffer proc)))
@@ -1139,7 +1166,9 @@ This function advances point to the next line when 
finished."
                          (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))
+                       (if (not notmuch-search-result-format)
+                           (insert (format "%s %-7s %-40s %s (%s)\n" date 
count authors subject tags))
+                         (notmuch-search-show-result date count authors 
subject tags))
                        (put-text-property beg (point-marker) 
'notmuch-search-thread-id thread-id))
                      (set 'line (match-end 0)))
                  (set 'more nil))))))
-- 
1.6.5.2.74.g610f9

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

Reply via email to