emacs: Add a space after completed tag operations

Previously, when a user fully completed a tag operation, they had to
press space to begin entering another tag operation.  This is
different from, say, shell file name completion, which typically
inserts a space after an unambiguous completion under the assumption
that the user will want to enter more input.

This patch tweaks `notmuch-read-tag-changes' to act more like shell
file name completion: after an unambiguous tag completion, it now
inserts a space, ready and waiting for another tagging operation from
the user.  This is backwards-compatible with old habits, since there's
no harm in putting an extra space.
This commit is contained in:
Austin Clements 2013-10-24 17:30:27 -04:00 committed by David Bremner
parent a7964c86d1
commit 9f9a63c863

View file

@ -230,8 +230,16 @@ initial input in the minibuffer."
(set-keymap-parent map crm-local-completion-map)
(define-key map " " 'self-insert-command)
map)))
(delete "" (completing-read-multiple prompt
tag-list nil nil initial-input
(delete "" (completing-read-multiple
prompt
;; Append the separator to each completion so when the
;; user completes a tag they can immediately begin
;; entering another. `completing-read-multiple'
;; ultimately splits the input on crm-separator, so we
;; don't need to strip this back off (we just need to
;; delete "empty" entries caused by trailing spaces).
(mapcar (lambda (tag-op) (concat tag-op crm-separator)) tag-list)
nil nil initial-input
'notmuch-read-tag-changes-history))))
(defun notmuch-update-tags (tags tag-changes)