[PATCH 5/5] completion: complete addresses in from:/to: search terms
On Tue, Feb 24 2015, Jani Nikula wrote: > On Tue, 24 Feb 2015, Tomi Ollila wrote: >> On Tue, Jan 27 2015, Jani Nikula 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 slw 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... ;) > > Like this? ;) > > $ notmuch search to:tomiTABnottoomuch-addresses.sh: command not found Yes! ;) Tomi > I like the completion to be self contained. > > BR, > Jani.
[PATCH 5/5] completion: complete addresses in from:/to: search terms
On Tue, Jan 27 2015, Jani Nikula 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 slw 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 at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 5/5] completion: complete addresses in from:/to: search terms
On Tue, 24 Feb 2015, Tomi Ollila wrote: > On Tue, Jan 27 2015, Jani Nikula 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 slw 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... ;) Like this? ;) $ notmuch search to:tomiTABnottoomuch-addresses.sh: command not found I like the completion to be self contained. BR, Jani.
Re: [PATCH 5/5] completion: complete addresses in from:/to: search terms
On Tue, Jan 27 2015, Jani Nikula j...@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 slw 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 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 5/5] completion: complete addresses in from:/to: search terms
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 slw 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:? --- 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
[PATCH 5/5] completion: complete addresses in from:/to: search terms
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 slw 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:? --- 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