#compdef git gitk # zsh completion wrapper for git # # You need git's bash completion script installed somewhere, by default on the # same directory as this script. # # If your script is on ~/.git-completion.sh instead, 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: # # fpath=(~/.zsh/completion $fpath) complete () { # do nothing return 0 } zstyle -s ":completion:*:*:git:*" script script test -z "$script" && script="$(dirname ${funcsourcetrace[1]%:*})"/git-completion.bash ZSH_VERSION='' . "$script" __gitcomp () { emulate -L zsh local cur_="${3-$cur}" case "$cur_" in --*=) ;; *) local c IFS=$' \t\n' local -a array for c in ${=1}; do c="$c${4-}" case $c in --*=*|*.) ;; *) c="$c " ;; esac array+=("$c") done compset -P '*[=:]' compadd -Q -S '' -p "${2-}" -a -- array && _ret=0 ;; esac } __gitcomp_nl () { emulate -L zsh local IFS=$'\n' compset -P '*[=:]' compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0 } __gitcomp_file () { emulate -L zsh local IFS=$'\n' compset -P '*[=:]' compadd -Q -p "${2-}" -f -- ${=1} && _ret=0 } _git () { local _ret=1 () { emulate -L ksh local cur cword prev cur=${words[CURRENT-1]} prev=${words[CURRENT-2]} let cword=CURRENT-1 __${service}_main } let _ret && _default -S '' && _ret=0 return _ret } _git