gpg: Fix key/user id completion

This was too simplistic, among other things it completed things that
looked like key ids but weren't, didn't turn "\x3a" back into
colons (which made the argument invalid)....

gpg is weird.

Might fix #2150
This commit is contained in:
Fabian Homborg 2015-08-05 22:37:19 +02:00
parent 1271de321e
commit 2874650802

View file

@ -23,12 +23,22 @@ function __fish_complete_gpg_user_id -d "Complete using gpg user ids"
# gpg doesn't seem to like it when you use the whole key name as a
# completion, so we skip the <EMAIL> part and use it a s a
# description.
gpg --list-keys --with-colon|cut -d : -f 10|sed -ne 's/\(.*\) <\(.*\)>/\1'\t'\2/p'
# It also replaces colons with \x3a
gpg --list-keys --with-colon|cut -d : -f 10 | sed -ne 's/\\\x3a/:/g' -e 's/\(.*\) <\(.*\)>/\1'\t'\2/p'
end
function __fish_complete_gpg_key_id -d 'Complete using gpg key ids'
# Use user_id as the description
gpg --list-keys --with-colons|cut -d : -f 5,10|sed -ne "s/\(.*\):\(.*\)/\1'\t'\2/p"
set -l lastid
gpg --list-keys --with-colons | while read garbage
switch $garbage
case "uid*"
echo $garbage | cut -d ":" -f 10 | sed -e "s/\\\x3a/:/g" | read lastid
case "*"
echo $garbage | cut -d ":" -f 5 | read fingerprint
end
printf "%s\t%s\n" $fingerprint $lastid
end
end
function __fish_print_gpg_algo -d "Complete using all algorithms of the type specified in argv[1] supported by gpg. argv[1] is a regexp"