From 2874650802224bbf5a31162efbef19abda76abb9 Mon Sep 17 00:00:00 2001 From: Fabian Homborg Date: Wed, 5 Aug 2015 22:37:19 +0200 Subject: [PATCH] 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 --- share/completions/gpg.fish | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/share/completions/gpg.fish b/share/completions/gpg.fish index 5010be088..90e8f67e4 100644 --- a/share/completions/gpg.fish +++ b/share/completions/gpg.fish @@ -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 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"