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:
parent
cd07cc5312
commit
6b179adfe9
@ -2603,21 +2603,6 @@ _git ()
|
|||||||
{
|
{
|
||||||
local i c=1 command __git_dir
|
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
|
while [ $c -lt $cword ]; do
|
||||||
i="${words[c]}"
|
i="${words[c]}"
|
||||||
case "$i" in
|
case "$i" in
|
||||||
@ -2667,22 +2652,6 @@ _git ()
|
|||||||
|
|
||||||
_gitk ()
|
_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
|
__git_has_doubledash && return
|
||||||
|
|
||||||
local g="$(__gitdir)"
|
local g="$(__gitdir)"
|
||||||
@ -2703,16 +2672,43 @@ _gitk ()
|
|||||||
__git_complete_revlist
|
__git_complete_revlist
|
||||||
}
|
}
|
||||||
|
|
||||||
complete -o bashdefault -o default -o nospace -F _git git 2>/dev/null \
|
__git_func_wrap ()
|
||||||
|| complete -o default -o nospace -F _git git
|
{
|
||||||
complete -o bashdefault -o default -o nospace -F _gitk gitk 2>/dev/null \
|
if [[ -n ${ZSH_VERSION-} ]]; then
|
||||||
|| complete -o default -o nospace -F _gitk gitk
|
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
|
# The following are necessary only for Cygwin, and only are needed
|
||||||
# when the user has tab-completed the executable name and consequently
|
# when the user has tab-completed the executable name and consequently
|
||||||
# included the '.exe' suffix.
|
# included the '.exe' suffix.
|
||||||
#
|
#
|
||||||
if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
|
if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
|
||||||
complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \
|
__git_complete git.exe _git
|
||||||
|| complete -o default -o nospace -F _git git.exe
|
|
||||||
fi
|
fi
|
||||||
|
@ -63,7 +63,7 @@ run_completion ()
|
|||||||
local _cword
|
local _cword
|
||||||
_words=( $1 )
|
_words=( $1 )
|
||||||
(( _cword = ${#_words[@]} - 1 ))
|
(( _cword = ${#_words[@]} - 1 ))
|
||||||
_git && print_comp
|
__git_wrap_git && print_comp
|
||||||
}
|
}
|
||||||
|
|
||||||
test_completion ()
|
test_completion ()
|
||||||
|
Loading…
Reference in New Issue
Block a user