[PATCH 3/4] emacs: Add pseudo saved search to match mail that no saved search matches
Jani Nikula
jani at nikula.org
Tue Jun 28 00:31:31 PDT 2011
Add a pseudo saved search that matches all the mail that no other saved
search matches. Add new customization option notmuch-saved-searches-nomatch
to enable and name the pseudo saved search.
---
emacs/notmuch-hello.el | 30 +++++++++++++++++++++++-------
1 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index 84bce3a..b9c9b01 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -47,6 +47,12 @@
:type 'boolean
:group 'notmuch)
+(defcustom notmuch-saved-searches-nomatch nil
+ "Name of the pseudo saved search that no other saved search matches."
+ :type '(choice (const :tag "Off" nil)
+ string)
+ :group 'notmuch)
+
(defvar notmuch-hello-indent 4
"How much to indent non-headers.")
@@ -363,6 +369,22 @@ Complete list of currently available key bindings:
(not (member tag notmuch-hello-hide-tags)))
(process-lines notmuch-command "search-tags")))))
+(defun notmuch-hello-saved-alist ()
+ (if notmuch-saved-searches
+ (let ((saved-alist notmuch-saved-searches))
+ (when notmuch-saved-searches-nomatch
+ ;; Append the no-match search.
+ (add-to-list 'saved-alist
+ (cons notmuch-saved-searches-nomatch
+ (mapconcat (lambda (arg) (concat "(not (" (cdr arg) "))")) notmuch-saved-searches " and ")) t))
+ ;; Filter out empty saved searches if required.
+ (if notmuch-show-empty-saved-searches
+ saved-alist
+ (loop for elem in saved-alist
+ if (> (string-to-number (notmuch-saved-search-count (cdr elem))) 0)
+ collect elem)))
+ notmuch-saved-searches))
+
;;;###autoload
(defun notmuch-hello (&optional no-display)
"Run notmuch and display saved searches, known tags, etc."
@@ -433,13 +455,7 @@ Complete list of currently available key bindings:
(let ((found-target-pos nil)
(final-target-pos nil))
- (let* ((saved-alist
- ;; Filter out empty saved searches if required.
- (if notmuch-show-empty-saved-searches
- notmuch-saved-searches
- (loop for elem in notmuch-saved-searches
- if (> (string-to-number (notmuch-saved-search-count (cdr elem))) 0)
- collect elem)))
+ (let* ((saved-alist (notmuch-hello-saved-alist))
(saved-widest (notmuch-hello-longest-label saved-alist))
(alltags-alist (if notmuch-show-all-tags-list (notmuch-hello-generate-tag-alist)))
(alltags-widest (notmuch-hello-longest-label alltags-alist))
--
1.7.1
More information about the notmuch
mailing list