[RFC PATCH 1/2] emacs: allow functions as saved searches
Jani Nikula
jani at nikula.org
Wed Nov 23 13:08:36 PST 2011
Signed-off-by: Jani Nikula <jani at nikula.org>
---
emacs/notmuch-hello.el | 9 +++++++--
emacs/notmuch-lib.el | 8 ++++++--
emacs/notmuch.el | 9 +++++++--
3 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index 0582cae..ad3ae74 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -274,7 +274,9 @@ 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 (if (functionp (cdr elem))
+ (funcall (cdr elem) elem)
+ (cdr elem)))
(formatted-name (format "%s " name)))
(widget-insert (format "%8s "
(notmuch-hello-nice-number
@@ -452,7 +454,10 @@ 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
+ (if (functionp (cdr elem))
+ (funcall (cdr elem) elem)
+ (cdr elem)))) 0)
collect elem)))
(saved-widest (notmuch-hello-longest-label saved-alist))
(alltags-alist (if notmuch-show-all-tags-list (notmuch-hello-generate-tag-alist)))
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index 0f856bf..2ecb3fc 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -36,8 +36,12 @@
;;
(defcustom notmuch-saved-searches nil
- "A list of saved searches to display."
- :type '(alist :key-type string :value-type string)
+ "A list of saved searches to display.
+
+The list of saved searches is a list of key/value pairs, where
+the key is the name of the saved search, and value is either a
+query string, or a function that should return a query string."
+ :type '(alist :key-type string :value-type (choice string function))
:group 'notmuch)
(defvar notmuch-folders nil
diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index c1827cc..62f33e9 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -854,14 +854,19 @@ 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
+ (if (functionp (cdr tuple))
+ (funcall (cdr tuple) tuple)
+ (cdr tuple)))))
(and (string-match (concat "^" quoted-query) query)
(> (length (match-string 0 query))
longest-length)))
do (setq longest tuple))
longest))
(saved-search-name (car saved-search))
- (saved-search-query (cdr saved-search)))
+ (saved-search-query (if (functionp (cdr saved-search))
+ (funcall (cdr saved-search) saved-search)
+ (cdr saved-search))))
(cond ((and saved-search (equal saved-search-query query))
;; Query is the same as saved search (ignoring case)
(concat "*notmuch-saved-search-" saved-search-name "*"))
--
1.7.5.4
More information about the notmuch
mailing list