Merge branch 'fc/zsh-leftover-bits'
authorJunio C Hamano <gitster@pobox.com>
Sun, 2 Jun 2013 22:47:33 +0000 (15:47 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 2 Jun 2013 22:47:33 +0000 (15:47 -0700)
* fc/zsh-leftover-bits:
completion: zsh: improve bash script loading
completion: synchronize zsh wrapper
completion: cleanup zsh wrapper

contrib/completion/git-completion.bash
contrib/completion/git-completion.zsh
index 1c35eef56a6bd5295f994c2edd12b40db8dfde06..adeff8d9badee3bde9339b90e7b37e5d4dabc305 100644 (file)
@@ -2663,7 +2663,7 @@ if [[ -n ${ZSH_VERSION-} ]]; then
                                --*=*|*.) ;;
                                *) c="$c " ;;
                                esac
-                               array[$#array+1]="$c"
+                               array+=("$c")
                        done
                        compset -P '*[=:]'
                        compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
@@ -2689,22 +2689,14 @@ if [[ -n ${ZSH_VERSION-} ]]; then
                compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
        }
 
-       __git_zsh_helper ()
-       {
-               emulate -L ksh
-               local cur cword prev
-               cur=${words[CURRENT-1]}
-               prev=${words[CURRENT-2]}
-               let cword=CURRENT-1
-               __${service}_main
-       }
-
        _git ()
        {
-               emulate -L zsh
-               local _ret=1
-               __git_zsh_helper
-               let _ret && _default -S '' && _ret=0
+               local _ret=1 cur cword prev
+               cur=${words[CURRENT]}
+               prev=${words[CURRENT-1]}
+               let cword=CURRENT-1
+               emulate ksh -c __${service}_main
+               let _ret && _default && _ret=0
                return _ret
        }
 
index 2565d2eef4cd23ac2137d4b047300ebc4078fcdb..fac5e711ebbbd074366d89848165e0f9dbc36c36 100644 (file)
@@ -4,18 +4,17 @@
 #
 # Copyright (c) 2012-2013 Felipe Contreras <felipe.contreras@gmail.com>
 #
-# You need git's bash completion script installed somewhere, by default on the
-# same directory as this script.
+# You need git's bash completion script installed somewhere, by default it
+# would be the location bash-completion uses.
 #
-# If your script is on ~/.git-completion.sh instead, you can configure it on
-# your ~/.zshrc:
+# If your script is somewhere else, you can configure it on your ~/.zshrc:
 #
 #  zstyle ':completion:*:*:git:*' script ~/.git-completion.sh
 #
-# The recommended way to install this script is to copy to
-# '~/.zsh/completion/_git', and then add the following to your ~/.zshrc file:
+# The recommended way to install this script is to copy to '~/.zsh/_git', and
+# then add the following to your ~/.zshrc file:
 #
-#  fpath=(~/.zsh/completion $fpath)
+#  fpath=(~/.zsh $fpath)
 
 complete ()
 {
@@ -27,7 +26,19 @@ zstyle -T ':completion:*:*:git:*' tag-order && \
        zstyle ':completion:*:*:git:*' tag-order 'common-commands'
 
 zstyle -s ":completion:*:*:git:*" script script
-test -z "$script" && script="$(dirname ${funcsourcetrace[1]%:*})"/git-completion.bash
+if [ -z "$script" ]; then
+       local -a locations
+       local e
+       locations=(
+               '/etc/bash_completion.d/git' # fedora, old debian
+               '/usr/share/bash-completion/completions/git' # arch, ubuntu, new debian
+               '/usr/share/bash-completion/git' # gentoo
+               $(dirname ${funcsourcetrace[1]%:*})/git-completion.bash
+               )
+       for e in $locations; do
+               test -f $e && script="$e" && break
+       done
+fi
 ZSH_VERSION='' . "$script"
 
 __gitcomp ()