mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 10:28:09 +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.
|
||||
#
|
||||
|
||||
_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
|
||||
# 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()
|
||||
|
@ -44,10 +67,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`
|
||||
|
|
Loading…
Reference in a new issue