From b4459b8a4d39f635f79d44f676be13e974cc1a72 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Thu, 15 Apr 2010 21:22:57 -0700 Subject: [PATCH] emacs: Fix search filtering of a global search ("*") With the recent addition of "*" being a special case for a search matching all messages, we have to take care when doing a filter operation. In this case it's not legal to simply append and get: * and Instead we carefully construct a new search string of only: This could all be avoided if we had a parser that could understand "*" with the meaning we want. --- emacs/notmuch.el | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/emacs/notmuch.el b/emacs/notmuch.el index be09f424..8b153cc0 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -773,8 +773,12 @@ search." Runs a new search matching only messages that match both the current search results AND the additional query string provided." (interactive "sFilter search: ") - (let ((grouped-query (if (string-match-p notmuch-search-disjunctive-regexp query) (concat "( " query " )") query))) - (notmuch-search (concat notmuch-search-query-string " and " grouped-query) notmuch-search-oldest-first))) + (let ((grouped-query (if (string-match-p notmuch-search-disjunctive-regexp query) + (concat "( " query " )") + query))) + (notmuch-search (if (string= notmuch-search-query-string "*") + grouped-query + (concat notmuch-search-query-string " and " grouped-query)) notmuch-search-oldest-first))) (defun notmuch-search-filter-by-tag (tag) "Filter the current search results based on a single tag.