It turns out 'words' is a special variable used by zsh completion, and it has some strange behavior as we can see. Better avoid it. Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> --- contrib/completion/git-completion.bash | 66 ++++++++++++++++---------------- 1 files changed, 33 insertions(+), 33 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index b94ff3c..9aae484 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -447,8 +447,8 @@ _get_comp_words_by_ref () prev) prev=${words_[$cword_-1]} ;; - words) - words=("${words_[@]}") + cwords) + cwords=("${words_[@]}") ;; cword) cword=$cword_ @@ -468,8 +468,8 @@ _get_comp_words_by_ref () prev) prev=${COMP_WORDS[COMP_CWORD-1]} ;; - words) - words=("${COMP_WORDS[@]}") + cwords) + cwords=("${COMP_WORDS[@]}") ;; cword) cword=$COMP_CWORD @@ -739,12 +739,12 @@ __git_complete_revlist () __git_complete_remote_or_refspec () { - local cur words cword - _get_comp_words_by_ref -n =: cur words cword - local cmd="${words[1]}" + local cur cwords cword + _get_comp_words_by_ref -n =: cur cwords cword + local cmd="${cwords[1]}" local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0 while [ $c -lt $cword ]; do - i="${words[c]}" + i="${cwords[c]}" case "$i" in --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;; --all) @@ -991,10 +991,10 @@ __git_aliased_command () # __git_find_on_cmdline requires 1 argument __git_find_on_cmdline () { - local word subcommand c=1 words cword - _get_comp_words_by_ref -n =: words cword + local word subcommand c=1 cwords cword + _get_comp_words_by_ref -n =: cwords cword while [ $c -lt $cword ]; do - word="${words[c]}" + word="${cwords[c]}" for subcommand in $1; do if [ "$subcommand" = "$word" ]; then echo "$subcommand" @@ -1007,10 +1007,10 @@ __git_find_on_cmdline () __git_has_doubledash () { - local c=1 words cword - _get_comp_words_by_ref -n =: words cword + local c=1 cwords cword + _get_comp_words_by_ref -n =: cwords cword while [ $c -lt $cword ]; do - if [ "--" = "${words[c]}" ]; then + if [ "--" = "${cwords[c]}" ]; then return 0 fi c=$((++c)) @@ -1135,11 +1135,11 @@ _git_bisect () _git_branch () { - local i c=1 only_local_ref="n" has_r="n" cur words cword + local i c=1 only_local_ref="n" has_r="n" cur cwords cword - _get_comp_words_by_ref -n =: cur words cword + _get_comp_words_by_ref -n =: cur cwords cword while [ $c -lt $cword ]; do - i="${words[c]}" + i="${cwords[c]}" case "$i" in -d|-m) only_local_ref="y" ;; -r) has_r="y" ;; @@ -1167,9 +1167,9 @@ _git_branch () _git_bundle () { - local words cword - _get_comp_words_by_ref -n =: words cword - local cmd="${words[2]}" + local cwords cword + _get_comp_words_by_ref -n =: cwords cword + local cmd="${cwords[2]}" case "$cword" in 2) __gitcomp "create list-heads verify unbundle" @@ -1713,15 +1713,15 @@ _git_notes () { local subcommands='add append copy edit list prune remove show' local subcommand="$(__git_find_on_cmdline "$subcommands")" - local cur words cword - _get_comp_words_by_ref -n =: cur words cword + local cur cwords cword + _get_comp_words_by_ref -n =: cur cwords cword case "$subcommand,$cur" in ,--*) __gitcomp '--ref' ;; ,*) - case "${words[cword-1]}" in + case "${cwords[cword-1]}" in --ref) __gitcomp "$(__git_refs)" ;; @@ -1749,7 +1749,7 @@ _git_notes () prune,*) ;; *) - case "${words[cword-1]}" in + case "${cwords[cword-1]}" in -m|-F) ;; *) @@ -1893,11 +1893,11 @@ _git_stage () __git_config_get_set_variables () { - local words cword - _get_comp_words_by_ref -n =: words cword + local cwords cword + _get_comp_words_by_ref -n =: cwords cword local prevword word config_file= c=$cword while [ $c -gt 1 ]; do - word="${words[c]}" + word="${cwords[c]}" case "$word" in --global|--system|--file=*) config_file="$word" @@ -2665,10 +2665,10 @@ _git_svn () _git_tag () { local i c=1 f=0 - local words cword prev - _get_comp_words_by_ref -n =: words cword prev + local cwords cword prev + _get_comp_words_by_ref -n =: cwords cword prev while [ $c -lt $cword ]; do - i="${words[c]}" + i="${cwords[c]}" case "$i" in -d|-v) __gitcomp "$(__git_tags)" @@ -2712,10 +2712,10 @@ _git () setopt KSH_TYPESET fi - local cur words cword - _get_comp_words_by_ref -n =: cur words cword + local cur cwords cword + _get_comp_words_by_ref -n =: cur cwords cword while [ $c -lt $cword ]; do - i="${words[c]}" + i="${cwords[c]}" case "$i" in --git-dir=*) __git_dir="${i#--git-dir=}" ;; --bare) __git_dir="." ;; -- 1.7.5 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html