On Tue, Jan 27 2015, Jani Nikula <jani@nikula.org> wrote: > Use the new notmuch address command to do completion for addresses in > from: and to:. > > --- > > This patch is more of an RFC. The to: completion is sloooow because > typically there are more matches to begin with, and then producing the > results requires reading the messages. Maybe it would be better to use > the same mechanism as from: for both, even if it's not accurate for > to:? Shameless marketing puff: Imagine how fast would it would be to use nottoomuch-addresses -- the completions are there before one sees TAB KeyRelease event... ;) Tomi > --- > completion/notmuch-completion.bash | 30 +++++++++++++++++++++++++----- > 1 file changed, 25 insertions(+), 5 deletions(-) > > diff --git a/completion/notmuch-completion.bash b/completion/notmuch-completion.bash > index e0498903f22f..db49294fc58c 100644 > --- a/completion/notmuch-completion.bash > +++ b/completion/notmuch-completion.bash > @@ -27,10 +27,30 @@ > # on completion. > # > > -_notmuch_user_emails() > +# $1: current input of the form prefix:partialinput, where prefix is > +# to or from. > +_notmuch_email() > { > - notmuch config get user.primary_email > - notmuch config get user.other_email > + local output prefix cur > + > + prefix="${1%%:*}" > + cur="${1#*:}" > + > + # Cut the input to be completed at punctuation because > + # (apparently) Xapian does not support the trailing wildcard '*' > + # operator for input with punctuation. We let compgen handle the > + # extra filtering required. > + cur="${cur%%[^a-zA-Z0-9]*}" > + > + case "$prefix" in > + to) output=recipients;; > + from) output=sender;; > + *) return;; > + esac > + > + # Only emit plain, lower case, unique addresses. > + notmuch address --output=$output $prefix:"${cur}*" | \ > + sed 's/[^<]*<\([^>]*\)>/\1/' | tr "[:upper:]" "[:lower:]" | sort -u > } > > _notmuch_search_terms() > @@ -44,10 +64,10 @@ _notmuch_search_terms() > COMPREPLY=( $(compgen -P "tag:" -W "`notmuch search --output=tags \*`" -- ${cur##tag:}) ) > ;; > to:*) > - COMPREPLY=( $(compgen -P "to:" -W "`_notmuch_user_emails`" -- ${cur##to:}) ) > + COMPREPLY=( $(compgen -P "to:" -W "`_notmuch_email ${cur}`" -- ${cur##to:}) ) > ;; > from:*) > - COMPREPLY=( $(compgen -P "from:" -W "`_notmuch_user_emails`" -- ${cur##from:}) ) > + COMPREPLY=( $(compgen -P "from:" -W "`_notmuch_email ${cur}`" -- ${cur##from:}) ) > ;; > path:*) > local path=`notmuch config get database.path` > -- > 2.1.4 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch