mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
completion: complete addresses in from:/to: search terms
Use the new notmuch address command to do completion for addresses in from: and to:. Use --output=sender for both for efficiency, even though --output=recipients would be more accurate for to: prefix completion.
This commit is contained in:
parent
2447f4c119
commit
76f8498df6
1 changed files with 28 additions and 5 deletions
|
@ -27,10 +27,33 @@
|
||||||
# on completion.
|
# 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
|
local output prefix cur
|
||||||
notmuch config get user.other_email
|
|
||||||
|
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
|
||||||
|
# Note: It would be more accurate and less surprising to have
|
||||||
|
# output=recipients here for to: addresses, but as gathering
|
||||||
|
# the recipient addresses requires disk access for each
|
||||||
|
# matching message, this becomes prohibitively slow.
|
||||||
|
to|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()
|
_notmuch_search_terms()
|
||||||
|
@ -44,10 +67,10 @@ _notmuch_search_terms()
|
||||||
COMPREPLY=( $(compgen -P "tag:" -W "`notmuch search --output=tags \*`" -- ${cur##tag:}) )
|
COMPREPLY=( $(compgen -P "tag:" -W "`notmuch search --output=tags \*`" -- ${cur##tag:}) )
|
||||||
;;
|
;;
|
||||||
to:*)
|
to:*)
|
||||||
COMPREPLY=( $(compgen -P "to:" -W "`_notmuch_user_emails`" -- ${cur##to:}) )
|
COMPREPLY=( $(compgen -P "to:" -W "`_notmuch_email ${cur}`" -- ${cur##to:}) )
|
||||||
;;
|
;;
|
||||||
from:*)
|
from:*)
|
||||||
COMPREPLY=( $(compgen -P "from:" -W "`_notmuch_user_emails`" -- ${cur##from:}) )
|
COMPREPLY=( $(compgen -P "from:" -W "`_notmuch_email ${cur}`" -- ${cur##from:}) )
|
||||||
;;
|
;;
|
||||||
path:*)
|
path:*)
|
||||||
local path=`notmuch config get database.path`
|
local path=`notmuch config get database.path`
|
||||||
|
|
Loading…
Reference in a new issue