Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [BUG] zsh gpg completion does not recognize gpg --keyring
- X-seq: zsh-users 10564
- From: Peter Stephenson <pws@xxxxxxx>
- To: zsh-users@xxxxxxxxxx
- Subject: Re: [BUG] zsh gpg completion does not recognize gpg --keyring
- Date: Mon, 31 Jul 2006 11:37:32 +0100
- In-reply-to: <87zmeqr2d4.fsf@xxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- Organization: Cambridge Silicon Radio
- References: <87zmeqr2d4.fsf@xxxxxxxxxxxxxxxxxxxx>
Mikhail Gusarov <dottedmag@xxxxxxxxxxxxx> wrote:
> Autocomplete in commang 'gpg --no-default-keyring --keyring
> /some/key/ring' gives me userids from my default keyring (~/.gnupg),
> not from the specified in the command line.
I think the following fixes it, but I don't have a gpg setup to use for
testing, so I haven't confirmed the effect (though I did test the code I
added). Luckily, somebody cleverly wrote gpg with just the structure
needed for this addition.
Index: Completion/Unix/Command/_gpg
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_gpg,v
retrieving revision 1.5
diff -u -r1.5 _gpg
--- Completion/Unix/Command/_gpg 10 Jul 2005 12:03:18 -0000 1.5
+++ Completion/Unix/Command/_gpg 31 Jul 2006 10:36:36 -0000
@@ -139,18 +139,35 @@
fi
fi
+# We need to keep some arguments to get a consistent list of keys
+# etc.
+local -a needed
+integer krind=${words[(I)--keyring(|=*)]}
+needed=(${words[(r)--no-default-keyring]})
+if (( krind )); then
+ # We have a --keyring option. We can't be completing its
+ # argument because that was handled above, so it must be complete.
+ if [[ $words[krind] = --keyring ]]; then
+ if [[ -n $words[krind+1] ]]; then
+ needed+=(--keyring=$words[krind+1])
+ fi
+ else
+ needed+=($words[krind])
+ fi
+fi
+
case "$state" in
public-keys)
_wanted public-keys expl 'public key' \
- compadd ${${(Mo)$(_call_program public-keys gpg --list-keys 2>/dev/null):%<*>}//(<|>)/} && return
+ compadd ${${(Mo)$(_call_program public-keys gpg $needed --list-keys 2>/dev/null):%<*>}//(<|>)/} && return
;;
secret-keys)
_wanted secret-keys expl 'secret key' compadd \
- ${${(Mo)$(_call_program secret-keys gpg --list-secret-keys 2>/dev/null):%<*>}//(<|>)/} && return
+ ${${(Mo)$(_call_program secret-keys gpg $needed --list-secret-keys 2>/dev/null):%<*>}//(<|>)/} && return
;;
ciphers)
_wanted ciphers expl cipher compadd \
- ${${(s.,.)${(M)${(f)"$(_call_program ciphers gpg --version)"}:#Cipher*}#*:}# } && return
+ ${${(s.,.)${(M)${(f)"$(_call_program ciphers gpg $needed --version)"}:#Cipher*}#*:}# } && return
;;
esac
--
Peter Stephenson <pws@xxxxxxx> Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK Tel: +44 (0)1223 692070
To access the latest news from CSR copy this link into a web browser: http://www.csr.com/email_sig.php
Messages sorted by:
Reverse Date,
Date,
Thread,
Author