Browse Source
It seems there's always issues with zsh's bash completion emulation. I've tried to fix as many as I could[1], and most of the fixes are already in the latest version of zsh, but still, there are issues. There is no point going through all that pain; the emulation is easy to achieve, and this patch works better than zsh's bash completion emulation. [1] http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=commitdiff;h=23907bb840c80eef99eabba17e086e44c9b2d3fc Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint


1 changed files with 78 additions and 0 deletions
@ -0,0 +1,78 @@ |
|||||||
|
#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 |
Loading…
Reference in new issue