Currently when doing tab completion emacs queries the database and completes to any tag when adding but only completes to tags that are present in the message/thread/region when removing. However, since it queries the database it does this based on the current tags in the database not the current tags shown in the search view. This means that tag completion is not predictable and this seems undesirable. This series modifies it so that the tag caller can specify the possible completions (typically based on the tags that it believes are present). This means that the user know that -un<tab> will complete to -unread if he can see unread in the messages tags. (unread is a common stale tag as when you quit from a show buffer back to the search buffer the unread has often been removed). One side effect is that it solves the `large search' problem when doing tag completion on the very large queries that will be generated by the move to tagging by message-id rather than thread-id. id:1353763256-32336-1-git-send-email-markwalters1009@gmail.com (The tagging can use the batch tagging when that goes in). I think this makes the user interface more predictable/consistent but whether it is worth the change is less clear. Best wishes Mark markwalters1009 (5): emacs: move tag.el utility functions from lists to strings emacs: allow the tag caller to specify possible completions. emacs: notmuch.el remove duplicate tags from get-tags-region emacs: make search tag completion use the tags it believes are there emacs: show tag completion emacs/notmuch-show.el | 32 +++++++++++++++++++++++++------- emacs/notmuch-tag.el | 38 +++++++++++++++++++++++++++----------- emacs/notmuch.el | 10 ++++++---- 3 files changed, 58 insertions(+), 22 deletions(-) -- 1.7.9.1