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 @@
@@ -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