On Wed, 25 May 2011 10:44:51 -0400, Austin Clements <amdra...@mit.edu> wrote: > May I suggest a slightly different way of looking at this that will > quell my inner parser? Instead of configuring a weird "query > fragment" like "and tag:unread" to be string-concatenated with the tag > query, configure a *filter* query like merely "tag:unread" that > narrows down what you'd like to be counted within the scope of a tag. > The implementations are hardly different---simply generate the query > "tag:<tag> and ( <filter> )"---but a filter is a well-formed query, > not some string fragment. Furthermore, the user can't get bitten by > precedence and wind up with a query that counts messages that don't > even have that tag.
Good point, I attached an updated patch that implements this.
From 6a4a5fd3e2a1baa25f86f85d6c3324db26582b82 Mon Sep 17 00:00:00 2001 From: Daniel Schoepe <daniel.scho...@googlemail.com> Date: Fri, 20 May 2011 00:53:50 +0200 Subject: [PATCH] emacs: Make queries used in the all-tags section configurable This patch adds a customization variable that controls what queries are used to construct the all-tags section in notmuch-hello. It allows the user to specify a function to construct the query given a tag or a string that is used as a filter for each tag. It also adds a variable to hide various tags from the all-tags section. Signed-off-by: Daniel Schoepe <daniel.scho...@googlemail.com> --- emacs/notmuch-hello.el | 37 ++++++++++++++++++++++++++++++++++--- 1 files changed, 34 insertions(+), 3 deletions(-) diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el index e58dd24..a513bb0 100644 --- a/emacs/notmuch-hello.el +++ b/emacs/notmuch-hello.el @@ -55,6 +55,24 @@ :type 'boolean :group 'notmuch) +(defcustom notmuch-hello-tag-list-make-query nil + "Function or string to generate queries for the all tags list. + +This variable controls which query results are shown for each tag +in the \"all tags\" list. It can be nil (for default behaviour, +displaying all messages for a tag), a string that is used as a +filter for messages having that tag (equivalent to \"tag:TAG +and (THIS-VARIABLE)\", or a function that is given a tag and +should return the query that is to be used for the tag. If it +returns nil, the corresponding tag will be hidden." + :type '(choice (const nil :tag "tag:TAG") string function) + :group 'notmuch) + +(defcustom notmuch-hello-hide-tags nil + "List of tags to be hidden in the \"all tags\"-section." + :type '(repeat string) + :group 'notmuch) + (defface notmuch-hello-logo-background '((((class color) (background dark)) @@ -318,6 +336,21 @@ Complete list of currently available key bindings: ;;(setq buffer-read-only t) ) +(defun notmuch-hello-generate-tag-alist () + "Return an alist from tags to queries to display in the all-tags section." + (filter 'cdr + (mapcar '(lambda (tag) + (cons tag + (cond + ((functionp notmuch-hello-tag-list-make-query) + (funcall notmuch-hello-tag-list-make-query tag)) + ((stringp notmuch-hello-tag-list-make-query) + (concat "tag:" tag " and (" + notmuch-hello-tag-list-make-query ")")) + (t (concat "tag:" tag))))) + (filter (lambda (tag) (not (member tag notmuch-hello-hide-tags))) + (process-lines notmuch-command "search-tags"))))) + ;;;###autoload (defun notmuch-hello (&optional no-display) "Run notmuch and display saved searches, known tags, etc." @@ -396,9 +429,7 @@ Complete list of currently available key bindings: if (> (string-to-number (notmuch-saved-search-count (cdr elem))) 0) collect elem))) (saved-widest (notmuch-hello-longest-label saved-alist)) - (alltags-alist (if notmuch-show-all-tags-list - (mapcar '(lambda (tag) (cons tag (concat "tag:" tag))) - (process-lines notmuch-command "search-tags")))) + (alltags-alist (if notmuch-show-all-tags-list (notmuch-hello-generate-tag-alist))) (alltags-widest (notmuch-hello-longest-label alltags-alist)) (widest (max saved-widest alltags-widest))) -- 1.7.5.1
pgppAOTNzbSM7.pgp
Description: PGP signature
_______________________________________________ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch