| #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 |
| } |
| |
| _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 |