Re: [PATCH 6/6] emacs: separate history for operations which accept single and multiple tags

Subject: Re: [PATCH 6/6] emacs: separate history for operations which accept single and multiple tags

Date: Sun, 29 Jan 2012 18:02:29 -0500

To: Dmitry Kurochkin

Cc: notmuch@notmuchmail.org

From: Austin Clements


Quoth Dmitry Kurochkin on Jan 28 at  8:41 am:
> Some tag-related operations accept a single tag without prefix
> (`notmuch-select-tag-with-completion'), others accept multiple tags
> prefixed with '+' or '-' (`notmuch-select-tags-with-completion').
> Before the change, both functions used a single default minibuffer
> history.  This is inconvenient because you have to skip options with
> incompatible format when going through the history.  The patch adds
> separate history lists for the two functions.  Note that functions
> that accept the same input format (e.g. "+", "-", "*") share the
> history list as before.
> ---
>  emacs/notmuch.el |   12 ++++++++++--
>  1 files changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/emacs/notmuch.el b/emacs/notmuch.el
> index 24b0ea3..9813e0a 100644
> --- a/emacs/notmuch.el
> +++ b/emacs/notmuch.el
> @@ -76,6 +76,14 @@ For example:
>  (defvar notmuch-query-history nil
>    "Variable to store minibuffer history for notmuch queries")
>  
> +(defvar notmuch-select-tag-history nil
> +  "Variable to store notmuch tag history for
> +  `notmuch-select-tag-with-completion'.")
> +
> +(defvar notmuch-select-tags-history nil
> +  "Variable to store notmuch tags history for
> +  `notmuch-select-tags-with-completion'.")
> +

Really these are minibuffer or input histories, not "notmuch tag
history".  Also, the second line shouldn't be indented.  (Definitely
nits, but if you roll a new version, you might as well fix these.)

>  (defun notmuch-tag-completions (&optional search-terms)
>    (split-string
>     (with-output-to-string
> @@ -86,7 +94,7 @@ For example:
>  
>  (defun notmuch-select-tag-with-completion (prompt &rest search-terms)
>    (let ((tag-list (notmuch-tag-completions search-terms)))
> -    (completing-read prompt tag-list)))
> +    (completing-read prompt tag-list nil nil nil 'notmuch-select-tag-history)))
>  
>  (defun notmuch-select-tags-with-completion (&optional initial-input &rest search-terms)
>    (let* ((add-tag-list (mapcar (apply-partially 'concat "+")
> @@ -105,7 +113,7 @@ For example:
>  	    map)))
>      (delete "" (completing-read-multiple
>  		"Operations (+add -drop): notmuch tag " tag-list nil
> -		nil initial-input))))
> +		nil initial-input 'notmuch-select-tags-history))))
>  
>  (defun notmuch-update-tags (current-tags changed-tags)
>    "Update `current-tags' with `changed-tags' and return the result.

Thread: