提交 014578e0 编写于 作者: J Junio C Hamano

Merge branch 'fc/zsh-completion' into maint

* fc/zsh-completion:
  completion: simplify __gitcomp and __gitcomp_nl implementations
  completion: use ls -1 instead of rolling a loop to do that ourselves
  completion: work around zsh option propagation bug
...@@ -495,11 +495,8 @@ fi ...@@ -495,11 +495,8 @@ fi
# 4: A suffix to be appended to each possible completion word (optional). # 4: A suffix to be appended to each possible completion word (optional).
__gitcomp () __gitcomp ()
{ {
local cur_="$cur" local cur_="${3-$cur}"
if [ $# -gt 2 ]; then
cur_="$3"
fi
case "$cur_" in case "$cur_" in
--*=) --*=)
COMPREPLY=() COMPREPLY=()
...@@ -524,18 +521,8 @@ __gitcomp () ...@@ -524,18 +521,8 @@ __gitcomp ()
# appended. # appended.
__gitcomp_nl () __gitcomp_nl ()
{ {
local s=$'\n' IFS=' '$'\t'$'\n' local IFS=$'\n'
local cur_="$cur" suffix=" " COMPREPLY=($(compgen -P "${2-}" -S "${4- }" -W "$1" -- "${3-$cur}"))
if [ $# -gt 2 ]; then
cur_="$3"
if [ $# -gt 3 ]; then
suffix="$4"
fi
fi
IFS=$s
COMPREPLY=($(compgen -P "${2-}" -S "$suffix" -W "$1" -- "$cur_"))
} }
__git_heads () __git_heads ()
...@@ -643,13 +630,8 @@ __git_refs_remotes () ...@@ -643,13 +630,8 @@ __git_refs_remotes ()
__git_remotes () __git_remotes ()
{ {
local i ngoff IFS=$'\n' d="$(__gitdir)" local i IFS=$'\n' d="$(__gitdir)"
__git_shopt -q nullglob || ngoff=1 test -d "$d/remotes" && ls -1 "$d/remotes"
__git_shopt -s nullglob
for i in "$d/remotes"/*; do
echo ${i#$d/remotes/}
done
[ "$ngoff" ] && __git_shopt -u nullglob
for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do
i="${i#remote.}" i="${i#remote.}"
echo "${i/.url*/}" echo "${i/.url*/}"
...@@ -676,7 +658,8 @@ __git_merge_strategies= ...@@ -676,7 +658,8 @@ __git_merge_strategies=
# is needed. # is needed.
__git_compute_merge_strategies () __git_compute_merge_strategies ()
{ {
: ${__git_merge_strategies:=$(__git_list_merge_strategies)} test -n "$__git_merge_strategies" ||
__git_merge_strategies=$(__git_list_merge_strategies)
} }
__git_complete_revlist_file () __git_complete_revlist_file ()
...@@ -854,7 +837,8 @@ __git_list_all_commands () ...@@ -854,7 +837,8 @@ __git_list_all_commands ()
__git_all_commands= __git_all_commands=
__git_compute_all_commands () __git_compute_all_commands ()
{ {
: ${__git_all_commands:=$(__git_list_all_commands)} test -n "$__git_all_commands" ||
__git_all_commands=$(__git_list_all_commands)
} }
__git_list_porcelain_commands () __git_list_porcelain_commands ()
...@@ -947,7 +931,8 @@ __git_porcelain_commands= ...@@ -947,7 +931,8 @@ __git_porcelain_commands=
__git_compute_porcelain_commands () __git_compute_porcelain_commands ()
{ {
__git_compute_all_commands __git_compute_all_commands
: ${__git_porcelain_commands:=$(__git_list_porcelain_commands)} test -n "$__git_porcelain_commands" ||
__git_porcelain_commands=$(__git_list_porcelain_commands)
} }
__git_pretty_aliases () __git_pretty_aliases ()
...@@ -2733,33 +2718,3 @@ if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then ...@@ -2733,33 +2718,3 @@ if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \ complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \
|| complete -o default -o nospace -F _git git.exe || complete -o default -o nospace -F _git git.exe
fi fi
if [[ -n ${ZSH_VERSION-} ]]; then
__git_shopt () {
local option
if [ $# -ne 2 ]; then
echo "USAGE: $0 (-q|-s|-u) <option>" >&2
return 1
fi
case "$2" in
nullglob)
option="$2"
;;
*)
echo "$0: invalid option: $2" >&2
return 1
esac
case "$1" in
-q) setopt | grep -q "$option" ;;
-u) unsetopt "$option" ;;
-s) setopt "$option" ;;
*)
echo "$0: invalid flag: $1" >&2
return 1
esac
}
else
__git_shopt () {
shopt "$@"
}
fi
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册