浏览代码

gitfast: fetch latest fixes from git-completion (#9390)

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Felipe Contreras 4 年之前
父节点
当前提交
d055445625
共有 2 个文件被更改,包括 22 次插入17 次删除
  1. 20 13
      plugins/gitfast/_git
  2. 2 4
      plugins/gitfast/git-completion.bash

+ 20 - 13
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,26 +112,26 @@ __gitcomp_nl ()
 	compadd -Q -S "${4- }" -p "${2-}" -- ${(f)1} && _ret=0
 }
 
-__gitcomp_nl_append ()
+__gitcomp_file ()
 {
 	emulate -L zsh
 
-	compset -P '*[=:]'
-	compadd -Q -S "${4- }" -p "${2-}" -- ${(f)1} && _ret=0
+	compadd -f -p "${2-}" -- ${(f)1} && _ret=0
 }
 
-__gitcomp_file_direct ()
+__gitcomp_direct_append ()
 {
-	emulate -L zsh
-
-	compadd -f -- ${(f)1} && _ret=0
+	__gitcomp_direct "$@"
 }
 
-__gitcomp_file ()
+__gitcomp_nl_append ()
 {
-	emulate -L zsh
+	__gitcomp_nl "$@"
+}
 
-	compadd -f -p "${2-}" -- ${(f)1} && _ret=0
+__gitcomp_file_direct ()
+{
+	__gitcomp_file "$1" ""
 }
 
 _git_zsh ()

+ 2 - 4
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