emacs: Add a sort-order option to saved-searches

This adds a sort-order option to saved-searches, stores it in the
saved-search buttons (widgets), and uses the stored value when the
button is pressed.

Storing the sort-order in the widget was suggested by Jani in
id:4c3876274126985683e888641b29cf18142a5eb8.1391771337.git.jani@nikula.org.
This commit is contained in:
Mark Walters 2014-04-06 06:44:49 +01:00 committed by David Bremner
parent 355d24fb94
commit f225ee59eb
2 changed files with 16 additions and 2 deletions

View file

@ -363,7 +363,8 @@ diagonal."
(defun notmuch-hello-widget-search (widget &rest ignore) (defun notmuch-hello-widget-search (widget &rest ignore)
(notmuch-search (widget-get widget (notmuch-search (widget-get widget
:notmuch-search-terms) :notmuch-search-terms)
notmuch-search-oldest-first)) (widget-get widget
:notmuch-search-oldest-first)))
(defun notmuch-saved-search-count (search) (defun notmuch-saved-search-count (search)
(car (process-lines notmuch-command "count" search))) (car (process-lines notmuch-command "count" search)))
@ -495,12 +496,17 @@ with `notmuch-hello-query-counts'."
(widget-insert (make-string column-indent ? ))) (widget-insert (make-string column-indent ? )))
(let* ((name (plist-get elem :name)) (let* ((name (plist-get elem :name))
(query (plist-get elem :query)) (query (plist-get elem :query))
(oldest-first (case (plist-get elem :sort-order)
(newest-first nil)
(oldest-first t)
(otherwise notmuch-search-oldest-first)))
(msg-count (plist-get elem :count))) (msg-count (plist-get elem :count)))
(widget-insert (format "%8s " (widget-insert (format "%8s "
(notmuch-hello-nice-number msg-count))) (notmuch-hello-nice-number msg-count)))
(widget-create 'push-button (widget-create 'push-button
:notify #'notmuch-hello-widget-search :notify #'notmuch-hello-widget-search
:notmuch-search-terms query :notmuch-search-terms query
:notmuch-search-oldest-first oldest-first
name) name)
(setq column-indent (setq column-indent
(1+ (max 0 (- column-width (length name))))))) (1+ (max 0 (- column-width (length name)))))))

View file

@ -125,7 +125,12 @@ searches so they still work in customize."
(group :format "%v" :inline t (const :format " Query: " :query) (string :format "%v"))) (group :format "%v" :inline t (const :format " Query: " :query) (string :format "%v")))
(checklist :inline t (checklist :inline t
:format "%v" :format "%v"
(group :format "%v" :inline t (const :format "Count-Query: " :count-query) (string :format "%v"))))) (group :format "%v" :inline t (const :format "Count-Query: " :count-query) (string :format "%v"))
(group :format "%v" :inline t (const :format "" :sort-order)
(choice :tag " Sort Order"
(const :tag "Default" nil)
(const :tag "Oldest-first" oldest-first)
(const :tag "Newest-first" newest-first))))))
(defcustom notmuch-saved-searches '((:name "inbox" :query "tag:inbox") (defcustom notmuch-saved-searches '((:name "inbox" :query "tag:inbox")
(:name "unread" :query "tag:unread")) (:name "unread" :query "tag:unread"))
@ -139,6 +144,9 @@ a plist. Supported properties are
:count-query Optional extra query to generate the count :count-query Optional extra query to generate the count
shown. If not present then the :query property shown. If not present then the :query property
is used. is used.
:sort-order Specify the sort order to be used for the search.
Possible values are 'oldest-first 'newest-first or
nil. Nil means use the default sort order.
Other accepted forms are a cons cell of the form (NAME . QUERY) Other accepted forms are a cons cell of the form (NAME . QUERY)
or a list of the form (NAME QUERY COUNT-QUERY)." or a list of the form (NAME QUERY COUNT-QUERY)."