From: SZEDER Gábor Date: Mon, 30 Aug 2010 14:19:27 GMT Subject: Re: [PATCHv2] completion: make compatible with zsh Message-ID: <20100830141927.GA16495@neumann> In-Reply-To: <1282877156-16149-1-git-send-email-lodatom@gmail.com> Hi, On Thu, Aug 26, 2010 at 10:45:56PM -0400, Mark Lodato wrote: > Modify git-completion.bash so that it also works with zsh when using > bashcompinit. In particular: > > declare -F > Zsh doesn't have the same 'declare -F' as bash, but 'declare -f' > is the same, and it works just as well for our purposes. > @@ -2372,17 +2383,22 @@ _git () > fi > > local completion_func="_git_${command//-/_}" > - declare -F $completion_func >/dev/null && $completion_func && return > + declare -f $completion_func >/dev/null && $completion_func && return > > local expansion=$(__git_aliased_command "$command") > if [ -n "$expansion" ]; then > completion_func="_git_${expansion//-/_}" > - declare -F $completion_func >/dev/null && $completion_func > + declare -f $completion_func >/dev/null && $completion_func > fi > } I chose -F back then because it does not print the definition of the completion function, so there is less stuff to throw away immediately. However, the run-time difference seems to be barely measureable (i.e. 'time declare -f _git_config >/dev/null' vs. 'declare -F _git_config >/dev/null' sometimes shows 0.001s difference), so I'm fine with this change. > @@ -2417,3 +2433,29 @@ if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then > complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \ > || complete -o default -o nospace -F _git git.exe > fi > + > +if [[ -z $ZSH_VERSION ]]; then -z? I think you wanted to use -n here, like at the other places. Nit: why "if [[ ... ]]"? FWIW "if [ ... ]" would be enough. > + shopt () { > + local option > + if [ $# -ne 2 ]; then > + echo "USAGE: $0 (-q|-s|-u)