]> git.cworth.org Git - notmuch/commitdiff
emacs: Allow functions in notmuch-search-result-format
authorDavid Edmondson <dme@dme.org>
Sun, 21 Feb 2021 15:19:01 +0000 (15:19 +0000)
committerDavid Bremner <david@tethera.net>
Thu, 9 Sep 2021 01:59:48 +0000 (22:59 -0300)
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

index 6076a967d838c072ebe7c9ee4d1540d727268c75..479b39f1fb81bd0c8a9d1b8f84c580cfa14cce58 100644 (file)
@@ -834,6 +834,8 @@ non-authors is found, assume that all of the authors match."
 
 (defun notmuch-search-insert-field (field format-string result)
   (pcase field
 
 (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)))
     ("date"
      (insert (propertize (format format-string (plist-get result :date_relative))
                         'face 'notmuch-search-date)))