emacs: hello: add a customize for saved-searches

Make the defcustom for notmuch-saved-searches use the new plist
format. It should still work with oldstyle saved-searches but will
write the newstyle form.
This commit is contained in:
Mark Walters 2014-04-06 06:44:47 +01:00 committed by David Bremner
parent 5e26d14536
commit 79c262be66
2 changed files with 43 additions and 5 deletions

View file

@ -323,7 +323,7 @@ return that."
;; Add the new one. ;; Add the new one.
(customize-save-variable 'notmuch-saved-searches (customize-save-variable 'notmuch-saved-searches
(add-to-list 'notmuch-saved-searches (add-to-list 'notmuch-saved-searches
(cons name search) t)) (list :name name :query search) t))
(message "Saved '%s' as '%s'." search name) (message "Saved '%s' as '%s'." search name)
(notmuch-hello-update))) (notmuch-hello-update)))

View file

@ -107,10 +107,48 @@ Note that the recommended way of achieving the same is using
(defvar notmuch-search-history nil (defvar notmuch-search-history nil
"Variable to store notmuch searches history.") "Variable to store notmuch searches history.")
(defcustom notmuch-saved-searches '(("inbox" . "tag:inbox") (defun notmuch--saved-searches-to-plist (symbol)
("unread" . "tag:unread")) "Extract a saved-search variable into plist form.
"A list of saved searches to display."
:type '(alist :key-type string :value-type string) The new style saved search is just a plist, but for backwards
compatatibility we use this function to extract old style saved
searches so they still work in customize."
(let ((saved-searches (default-value symbol)))
(mapcar #'notmuch-hello-saved-search-to-plist saved-searches)))
(define-widget 'notmuch-saved-search-plist 'list
"A single saved search property list."
:tag "Saved Search"
:args '((list :inline t
:format "%v"
(group :format "%v" :inline t (const :format " Name: " :name) (string :format "%v"))
(group :format "%v" :inline t (const :format " Query: " :query) (string :format "%v")))
(checklist :inline t
:format "%v"
(group :format "%v" :inline t (const :format "Count-Query: " :count-query) (string :format "%v")))))
(defcustom notmuch-saved-searches '((:name "inbox" :query "tag:inbox")
(:name "unread" :query "tag:unread"))
"A list of saved searches to display.
The saved search can be given in 3 forms. The preferred way is as
a plist. Supported properties are
:name Name of the search (required).
:query Search to run (required).
:count-query Optional extra query to generate the count
shown. If not present then the :query property
is used.
Other accepted forms are a cons cell of the form (NAME . QUERY)
or a list of the form (NAME QUERY COUNT-QUERY)."
;; The saved-search format is also used by the all-tags notmuch-hello
;; section. This section generates its own saved-search list in one of
;; the latter two forms.
:get 'notmuch--saved-searches-to-plist
:type '(repeat notmuch-saved-search-plist)
:tag "List of Saved Searches"
:group 'notmuch-hello) :group 'notmuch-hello)
(defcustom notmuch-archive-tags '("-inbox") (defcustom notmuch-archive-tags '("-inbox")