If the car of an element in notmuch-search-result-format is a
function, insert the result of calling the function into the buffer.

This allows a user to generate custom fields in the output of a search
result. For example, with:

(defun -notmuch-result-flags (format-string result)
  (let ((tags-to-letters '(("flagged" . "!")
                           ("unread" . "u")
                           ("mine" . "m")
                           ("sent" . "s")
                           ("replied" . "r")))
        (tags (plist-get result :tags)))

    (format format-string
            (mapconcat (lambda (t2l)
                         (if (member (car t2l) tags)
                             (cdr t2l)
                           " "))
                       tags-to-letters ""))))

(setq notmuch-search-result-format '((-notmuch-result-flags . "%s ")
                                     ("date" . "%12s ")
                                     ("count" . "%9s ")
                                     ("authors" . "%-30s ")
                                     ("subject" . "%s ")
                                     ("tags" . "(%s)")))

The first few characters on each line of the search result are used to
show information about some significant tags associated with the
thread.
---
 emacs/notmuch.el | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index b9cee19c..6ba535d1 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -831,6 +831,8 @@ non-authors is found, assume that all of the authors match."
 
 (defun notmuch-search-insert-field (field format-string result)
   (pcase field
+    ((pred functionp)
+     (insert (funcall field format-string result)))
     ("date"
      (insert (propertize (format format-string (plist-get result 
:date_relative))
                         'face 'notmuch-search-date)))
-- 
2.30.0
_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org

Reply via email to