This permits saved searches like "today".
---
This is similar functionality to David's patch, but uses an accessor so that 
queries are always evaluated dynamically.

 emacs/notmuch-hello.el |    4 ++--
 emacs/notmuch-lib.el   |   11 ++++++++++-
 emacs/notmuch.el       |    2 +-
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index e58dd24..15eaafb 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -234,7 +234,7 @@ should be. Returns a cons cell `(tags-per-line width)'."
            ;; (not elem) indicates an empty slot in the matrix.
            (when elem
              (let* ((name (car elem))
-                    (query (cdr elem))
+                    (query (notmuch-saved-search-get-query elem))
                     (formatted-name (format "%s " name)))
                (widget-insert (format "%8s "
                                       (notmuch-hello-nice-number
@@ -393,7 +393,7 @@ Complete list of currently available key bindings:
              (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)
+                     if (> (string-to-number (notmuch-saved-search-count 
(notmuch-saved-search-get-query elem))) 0)
                      collect elem)))
             (saved-widest (notmuch-hello-longest-label saved-alist))
             (alltags-alist (if notmuch-show-all-tags-list
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index dd180ee..3fcb837 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -37,7 +37,9 @@

 (defcustom notmuch-saved-searches nil
   "A list of saved searches to display."
-  :type '(alist :key-type string :value-type string)
+  :type '(alist :key-type (string :tag "Name")
+                :value-type (choice (string :tag "Search")
+                                    (function :tag "Function")))
   :group 'notmuch)

 (defvar notmuch-folders nil
@@ -56,6 +58,13 @@ the user hasn't set this variable with the old or new value."
       '(("inbox" . "tag:inbox")
        ("unread" . "tag:unread")))))

+(defun notmuch-saved-search-get-query (tuple)
+  "Get the query string for a saved tuple."
+  (let ((q (cdr tuple)))
+    (if (stringp q)
+        q
+      (funcall q))))
+
 (defun notmuch-version ()
   "Return a string with the notmuch version number."
   (let ((long-string
diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index 5933747..5864b21 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -763,7 +763,7 @@ characters as well as `_.+-'.
          (let (longest
                (longest-length 0))
            (loop for tuple in notmuch-saved-searches
-                 if (let ((quoted-query (regexp-quote (cdr tuple))))
+                 if (let ((quoted-query (regexp-quote 
(notmuch-saved-search-get-query tuple))))
                       (and (string-match (concat "^" quoted-query) query)
                            (> (length (match-string 0 query))
                               longest-length)))
-- 
1.7.3.2

Reply via email to