diff --git a/plugins/gitfast/_git b/plugins/gitfast/_git index 6ca63ed87..aaea581d5 100644 --- a/plugins/gitfast/_git +++ b/plugins/gitfast/_git @@ -27,19 +27,26 @@ zstyle -T ':completion:*:*:git:*' tag-order && \ zstyle -s ":completion:*:*:git:*" script script if [ -z "$script" ]; then local -a locations - local e + local e bash_completion + + bash_completion=$(pkg-config --variable=completionsdir bash-completion 2>/dev/null) || + bash_completion='/usr/share/bash-completion/completions/' + locations=( "$(dirname ${funcsourcetrace[1]%:*})"/git-completion.bash "$HOME/.local/share/bash-completion/completions/git" - "$(pkg-config --variable=completionsdir bash-completion)"/git - '/usr/share/bash-completion/completions/git' + "$bash_completion/git" '/etc/bash_completion.d/git' # old debian ) for e in $locations; do test -f $e && script="$e" && break done fi + +local old_complete="$functions[complete]" +functions[complete]=: GIT_SOURCING_ZSH_COMPLETION=y . "$script" +functions[complete]="$old_complete" __gitcomp () { @@ -105,21 +112,6 @@ __gitcomp_nl () compadd -Q -S "${4- }" -p "${2-}" -- ${(f)1} && _ret=0 } -__gitcomp_nl_append () -{ - emulate -L zsh - - compset -P '*[=:]' - compadd -Q -S "${4- }" -p "${2-}" -- ${(f)1} && _ret=0 -} - -__gitcomp_file_direct () -{ - emulate -L zsh - - compadd -f -- ${(f)1} && _ret=0 -} - __gitcomp_file () { emulate -L zsh @@ -127,6 +119,21 @@ __gitcomp_file () compadd -f -p "${2-}" -- ${(f)1} && _ret=0 } +__gitcomp_direct_append () +{ + __gitcomp_direct "$@" +} + +__gitcomp_nl_append () +{ + __gitcomp_nl "$@" +} + +__gitcomp_file_direct () +{ + __gitcomp_file "$1" "" +} + _git_zsh () { __gitcomp "v1.0" diff --git a/plugins/gitfast/git-completion.bash b/plugins/gitfast/git-completion.bash index 76ba7e79f..b93706d17 100644 --- a/plugins/gitfast/git-completion.bash +++ b/plugins/gitfast/git-completion.bash @@ -3585,7 +3585,6 @@ __git_func_wrap () # This is NOT a public function; use at your own risk. __git_complete () { - test -n "$ZSH_VERSION" && return local wrapper="__git_wrap${2}" eval "$wrapper () { __git_func_wrap $2 ; }" complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \ @@ -3607,8 +3606,7 @@ if ! git --list-cmds=main >/dev/null 2>&1; then { case "$1" in --list-cmds=*) - IFS=, read -r -a cmds <<< "${1##--list-cmds=}" - for x in ${cmds[@]}; do + while read -r -d ',' x; do case "$x" in nohelpers) ;; @@ -3620,7 +3618,7 @@ if ! git --list-cmds=main >/dev/null 2>&1; then echo ${__git_cmds[$x]} ;; esac - done + done <<< "${1##--list-cmds=}," return ;; esac