From: Felipe Contreras Date: Mon, 07 May 2012 01:23:20 GMT Subject: [RFC/PATCH v4 6/6] completion: add public _GIT_complete helper Message-ID: <1336353800-17323-7-git-send-email-felipe.contreras@gmail.com> In-Reply-To: <1336353800-17323-1-git-send-email-felipe.contreras@gmail.com> So that users can easily define aliases, such as: _GIT_complete gf git_fetch Signed-off-by: Felipe Contreras --- contrib/completion/git-completion.bash | 10 +++++----- t/t9902-completion.sh | 9 ++++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 049110e..2b7ef02 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -2678,6 +2678,7 @@ _gitk () __git_func_wrap () { + local cmd="${1#git_}" cmd_pos=1 if [[ -n ${ZSH_VERSION-} ]]; then emulate -L bash setopt KSH_TYPESET @@ -2695,8 +2696,7 @@ __git_func_wrap () _$1 } -# this is NOT a public function; use at your own risk -__git_complete () +_GIT_complete () { local name="${2-$1}" local wrapper="_${name}_wrap" @@ -2705,13 +2705,13 @@ __git_complete () || complete -o default -o nospace -F $wrapper $1 } -__git_complete git -__git_complete gitk +_GIT_complete git +_GIT_complete 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 -__git_complete git.exe git +_GIT_complete git.exe git fi diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 6904594..2037452 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -63,7 +63,7 @@ run_completion () local _cword _words=( $1 ) (( _cword = ${#_words[@]} - 1 )) - _git_wrap && print_comp + ${comp_wrap-_git_wrap} && print_comp } test_completion () @@ -316,4 +316,11 @@ test_expect_success 'global options extra checks' ' test_completion "git --no-pager tag -d v" "v0.1 " ' +test_expect_success 'aliases' ' + local comp_wrap=_git_fetch_wrap && + _GIT_complete gf git_fetch && + test_completion "gf o" "origin " && + test_completion "gf origin m" "master:master " +' + test_done -- 1.7.10