зеркало из https://github.com/microsoft/git.git
completion: add new __git_complete helper
This simplifies the completions, and would make it easier to define aliases in the future. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
cd07cc5312
Коммит
6b179adfe9
|
@ -2603,21 +2603,6 @@ _git ()
|
|||
{
|
||||
local i c=1 command __git_dir
|
||||
|
||||
if [[ -n ${ZSH_VERSION-} ]]; then
|
||||
emulate -L bash
|
||||
setopt KSH_TYPESET
|
||||
|
||||
# workaround zsh's bug that leaves 'words' as a special
|
||||
# variable in versions < 4.3.12
|
||||
typeset -h words
|
||||
|
||||
# workaround zsh's bug that quotes spaces in the COMPREPLY
|
||||
# array if IFS doesn't contain spaces.
|
||||
typeset -h IFS
|
||||
fi
|
||||
|
||||
local cur words cword prev
|
||||
_get_comp_words_by_ref -n =: cur words cword prev
|
||||
while [ $c -lt $cword ]; do
|
||||
i="${words[c]}"
|
||||
case "$i" in
|
||||
|
@ -2667,22 +2652,6 @@ _git ()
|
|||
|
||||
_gitk ()
|
||||
{
|
||||
if [[ -n ${ZSH_VERSION-} ]]; then
|
||||
emulate -L bash
|
||||
setopt KSH_TYPESET
|
||||
|
||||
# workaround zsh's bug that leaves 'words' as a special
|
||||
# variable in versions < 4.3.12
|
||||
typeset -h words
|
||||
|
||||
# workaround zsh's bug that quotes spaces in the COMPREPLY
|
||||
# array if IFS doesn't contain spaces.
|
||||
typeset -h IFS
|
||||
fi
|
||||
|
||||
local cur words cword prev
|
||||
_get_comp_words_by_ref -n =: cur words cword prev
|
||||
|
||||
__git_has_doubledash && return
|
||||
|
||||
local g="$(__gitdir)"
|
||||
|
@ -2703,16 +2672,43 @@ _gitk ()
|
|||
__git_complete_revlist
|
||||
}
|
||||
|
||||
complete -o bashdefault -o default -o nospace -F _git git 2>/dev/null \
|
||||
|| complete -o default -o nospace -F _git git
|
||||
complete -o bashdefault -o default -o nospace -F _gitk gitk 2>/dev/null \
|
||||
|| complete -o default -o nospace -F _gitk gitk
|
||||
__git_func_wrap ()
|
||||
{
|
||||
if [[ -n ${ZSH_VERSION-} ]]; then
|
||||
emulate -L bash
|
||||
setopt KSH_TYPESET
|
||||
|
||||
# workaround zsh's bug that leaves 'words' as a special
|
||||
# variable in versions < 4.3.12
|
||||
typeset -h words
|
||||
|
||||
# workaround zsh's bug that quotes spaces in the COMPREPLY
|
||||
# array if IFS doesn't contain spaces.
|
||||
typeset -h IFS
|
||||
fi
|
||||
local cur words cword prev
|
||||
_get_comp_words_by_ref -n =: cur words cword prev
|
||||
$1
|
||||
}
|
||||
|
||||
# Setup completion for certain functions defined above by setting common
|
||||
# variables and workarounds.
|
||||
# This is NOT a public function; use at your own risk.
|
||||
__git_complete ()
|
||||
{
|
||||
local wrapper="__git_wrap${2}"
|
||||
eval "$wrapper () { __git_func_wrap $2 ; }"
|
||||
complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
|
||||
|| complete -o default -o nospace -F $wrapper $1
|
||||
}
|
||||
|
||||
__git_complete git _git
|
||||
__git_complete gitk _gitk
|
||||
|
||||
# The following are necessary only for Cygwin, and only are needed
|
||||
# when the user has tab-completed the executable name and consequently
|
||||
# included the '.exe' suffix.
|
||||
#
|
||||
if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
|
||||
complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \
|
||||
|| complete -o default -o nospace -F _git git.exe
|
||||
__git_complete git.exe _git
|
||||
fi
|
||||
|
|
|
@ -63,7 +63,7 @@ run_completion ()
|
|||
local _cword
|
||||
_words=( $1 )
|
||||
(( _cword = ${#_words[@]} - 1 ))
|
||||
_git && print_comp
|
||||
__git_wrap_git && print_comp
|
||||
}
|
||||
|
||||
test_completion ()
|
||||
|
|
Загрузка…
Ссылка в новой задаче