[PATCH 1/4] emacs: Add notmuch-intersperse to notmuch-lib/ [PATCH 2/4] emacs: pictures that might be used as icons for tags [PATCH 3/4] emacs: possibility to customize the rendering of tags [PATCH 4/4] emacs: provide convenience functions for notmuch-tagger
These patches are the first of an upcoming series whose goal is to integrate notmuch-labeler into notmuch. See the following for more details: https://github.com/DamienCassou/notmuch-labeler Points of discussion: - This series does not have any unit-test to make it smaller and more amenable to comments. I will send a patch when requested. - Patch 3/4 formats tags as mode-line templates so that we can show tags in the header-line in a later series. - Patch 3/4 introduces `notmuch-tagger-formats', a list of pairs (KEY FORMAT) to format a tag matching KEY using a special format. Currently, an example of such a list is: (("unread" (:propertize "unread" face (:foreground "red"))) ("flagged" (:propertize "flagged" display (image :type svg :file ,(notmuch-tagger-image-path "star.svg") :ascent center :mask heuristic)))) to set the unread tag to be red and the flagged tag to have a star picture attached. Because this variable is hard to edit without making mistakes, patch 4/4 introduces customization functions that the user can call on their init.el file like this: (notmuch-tagger-propertize "unread" :foreground "red") (notmuch-tagger-image-star "flagged") Nevertheless, implementing a customize interface for this variable is difficult as Emacs does not provide customization widgets for text-property lists. A possible solution could be to change the list value so that it looks like: (("unread" (propertize :foreground "red")) ("flagged" (image-star))) where the FORMAT part of each pair would be the suffix of a notmuch-tagger customization function name (as introduced by patch 4/4) and the rest would be parameters to pass to this function (except the KEY parameter that is already in each pair of the `notmuch-tagger-formats' list). This solution would be more amenable to the customization interface, but maybe less powerful.