From: SZEDER Gábor Date: Mon, 22 Nov 2010 15:24:09 GMT Subject: Re: [PATCH] bash completion: add basic support for git-reflog Message-ID: <20101122152409.GA7010@neumann> In-Reply-To: <1290274368-3212-1-git-send-email-rctay89@gmail.com> Hi, On Sun, Nov 21, 2010 at 01:32:48AM +0800, Tay Ray Chuan wrote: > Add basic completion for the three subcommands - show, expire, delete. > Try completing refs for these too. Heh, I've always thought reflog is plumbing, and that's why the completion script doesn't support it. > Signed-off-by: Tay Ray Chuan > --- > contrib/completion/git-completion.bash | 16 ++++++++++++++++ > 1 files changed, 16 insertions(+), 0 deletions(-) > > diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash > index f710469..4007ca1 100755 > --- a/contrib/completion/git-completion.bash > +++ b/contrib/completion/git-completion.bash > @@ -1632,6 +1632,22 @@ _git_rebase () > __gitcomp "$(__git_refs)" > } > > +_git_reflog () > +{ > + local SUB_CMDS=(show delete expire) > + local cur="${COMP_WORDS[COMP_CWORD-1]}" > + > + for val in ${SUB_CMDS[*]}; do > + if [[ "$val" == "$cur" ]]; then > + # this is a subcommand > + __gitcomp "$(__git_refs)" > + return This only looks at the previous word on the command line, and leads to wrong behavior when an option is used: $ git reflog expire --verbose delete expire show To prevent this you could use the __git_find_on_cmdline() helper function and follow how other completion functions use it. > + fi > + done > + > + __gitcomp "${SUB_CMDS[*]}" > +} > + > __git_send_email_confirm_options="always never auto cc compose" > __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all" > > -- > 1.7.3.2.496.g9c54 > >