mirror of
https://git.notmuchmail.org/git/notmuch
synced 2025-03-14 03:25:15 +01:00
emacs: hello: add helper functions for saved-searches
Add helper functions to for saved searches to ease the transition to the new plist form while maintaining backwards compatibility. They will be used in the next patch.
This commit is contained in:
parent
8977b1a259
commit
4767e89bc7
1 changed files with 38 additions and 0 deletions
|
@ -269,6 +269,44 @@ afterwards.")
|
|||
(add-to-history 'notmuch-search-history search)))
|
||||
(notmuch-search search notmuch-search-oldest-first))
|
||||
|
||||
(defun notmuch-saved-search-get (saved-search field)
|
||||
"Get FIELD from SAVED-SEARCH.
|
||||
|
||||
If SAVED-SEARCH is a plist, this is just `plist-get', but for
|
||||
backwards compatibility, this also deals with the two other
|
||||
possible formats for SAVED-SEARCH: cons cells (NAME . QUERY) and
|
||||
lists (NAME QUERY COUNT-QUERY)."
|
||||
(cond
|
||||
((keywordp (car saved-search))
|
||||
(plist-get saved-search field))
|
||||
;; It is not a plist so it is an old-style entry.
|
||||
((consp (cdr saved-search)) ;; It is a list (NAME QUERY COUNT-QUERY)
|
||||
(case field
|
||||
(:name (first saved-search))
|
||||
(:query (second saved-search))
|
||||
(:count-query (third saved-search))
|
||||
(t nil)))
|
||||
(t ;; It is a cons-cell (NAME . QUERY)
|
||||
(case field
|
||||
(:name (car saved-search))
|
||||
(:query (cdr saved-search))
|
||||
(t nil)))))
|
||||
|
||||
(defun notmuch-hello-saved-search-to-plist (saved-search)
|
||||
"Return a copy of SAVED-SEARCH in plist form.
|
||||
|
||||
If saved search is a plist then just return a copy. In other
|
||||
cases, for backwards compatability, convert to plist form and
|
||||
return that."
|
||||
(if (keywordp (car saved-search))
|
||||
(copy-seq saved-search)
|
||||
(let ((fields (list :name :query :count-query))
|
||||
plist-search)
|
||||
(dolist (field fields plist-search)
|
||||
(let ((string (notmuch-saved-search-get saved-search field)))
|
||||
(when string
|
||||
(setq plist-search (append plist-search (list field string)))))))))
|
||||
|
||||
(defun notmuch-hello-add-saved-search (widget)
|
||||
(interactive)
|
||||
(let ((search (widget-value
|
||||
|
|
Loading…
Add table
Reference in a new issue