Re: [PATCH 5/5] git-completion.bash: consolidate no-subcommand case for _git_stash()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 20, 2021, 21:10 UTC
- Message-ID
- <xmqqk0ow4q7k.fsf@gitster.g>
- In-Reply-To
- <b4a9b0afa7ab28b701499982f5a8fc66eb7e19e8.1618910364.git.liu.denton@gmail.com>
Denton Liu <liu.denton@gmail.com> writes:
> We have a separate if case for when no subcommand is given. It is > simpler to just consolidate this logic into the case statement below.
Hmph, I am not quite sure if the removal of the first case is making the code easier to follow. Is this supposed to be a no-op clean-up, or is it fixing some bugs?
Show 61 quoted lines
> It would be nice to complete remove the magic that deals with indices > and replace it with what was originally there, > > if [ -z "$subcommand" -a -n "$(__git_find_on_cmdline "-p")" ]; then > subcommand="push" > fi > > but this gives a slightly incorrect completion. In the case where we're > attempting to complete `git stash -a <TAB>` we will get the subcommands > back as a respose instead of the completions for `git stash push`, which > is what we'd expect. We could potentially hardcode all of the short > options but that would be too much work to maintain so we stick with the > index solution. > > Signed-off-by: Denton Liu <liu.denton@gmail.com> > --- > contrib/completion/git-completion.bash | 30 +++++++++++++------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash > index 7bce9a0112..060adc0ed7 100644 > --- a/contrib/completion/git-completion.bash > +++ b/contrib/completion/git-completion.bash > @@ -3016,22 +3016,22 @@ _git_stash () > local subcommands='push list show apply clear drop pop create branch' > local subcommand="$(__git_find_on_cmdline "$subcommands save")" > > - if [ -z "$subcommand" ]; then > - case "$((cword - __git_cmd_idx)),$cur" in > - *,--*) > - __gitcomp_builtin stash_push > - ;; > - 1,sa*) > - __gitcomp "save" > - ;; > - 1,*) > - __gitcomp "$subcommands" > - ;; > - esac > - return > - fi > - > case "$subcommand,$cur" in > + ,--*) > + __gitcomp_builtin stash_save > + ;; > + ,sa*) > + __git_init_builtin_opts stash_save > + if ((cword - __git_cmd_idx == 1)); then > + __gitcomp "save" > + fi > + ;; > + ,*) > + __git_init_builtin_opts stash_save > + if ((cword - __git_cmd_idx == 1)); then > + __gitcomp "$subcommands" > + fi > + ;; > list,--*) > # NEEDSWORK: can we somehow unify this with the options in _git_log() and _git_show() > __gitcomp_builtin stash_list "$__git_log_common_options $__git_diff_common_options"