git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/4] completion: reflog with implicit "show"

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 21, 2024, 01:46 UTC
Message-ID
<xmqqwmqyr3mb.fsf@gitster.g>
In-Reply-To
<dd106d87-3363-426a-90a2-16e1f2d04661@gmail.com>
Rubén Justo <rjusto@gmail.com> writes:
Show 28 quoted lines
>> So, when we see something that could be a subcommand we complete it
>> as a subcommand and return.  In your example, how should
>> 
>>     $ git reflog def<TAB>
>> 
>> work?  We try to see if there is a subcommand that begins with
>> "def", we see nothing matching, and then run __git_complete_refs?
>> What if the branch you created earlier were not named "default" but,
>> say, "delmonte", and you did "git reflog del<TAB>"?  Shouldn't the
>> user be offered "delete" and "delmonte" as potential completions?
>> 
>> >  __git_send_email_confirm_options="always never auto cc compose"
>> > diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
>> > index aa9a614de3..231e17f378 100755
>> > --- a/t/t9902-completion.sh
>> > +++ b/t/t9902-completion.sh
>> > @@ -2618,6 +2618,14 @@ test_expect_success 'git clone --config= - value' '
>> >  	EOF
>> >  '
>> >  
>> > +test_expect_success 'git reflog show' '
>> > +	test_when_finished "git checkout -" &&
>> > +	git checkout -b shown &&
>> > +	test_completion "git reflog sho" "show " &&
>> 
>> IOW, shouldn't this offer both show and shown?
>
> What should we do?

I would imagine that we should make the above offer both "show" (because it can be what the user meant) and "shown" (because it can also be what the user meant)? But thinking of it again, because "show" is a prefix of "shown", this should offer "show" and then another <TAB> would offer "show" and "shown". At least, that is what I would expect from the usual bash completion behaviour, which would look like:

    $ mkdir /var/tmp/scratch && cd /var/tmp/scratch
    $ : >show 2>shown
    $ echo sho<TAB>
The <TAB> makes the above line expand to
    $ echo show

and place the curser immediately after 'w' (without a space after it). Giving another <TAB> at this point offers two possible candidates.

    $ echo show<TAB>
    show shown
So, I'd expect a similar completion to happen, i.e.
    $ git reflog sho<TAB>
-->
    $ git reflog show

because there are two candidates, "show" and "shown", and I can type another <TAB> at that point to see the two candidates.

    $ git reflog show<TAB>
    show shown

If the branch name were "shot" instead of "shown", then the possible choices would become "show" and "shot", so we'd skip one step from the above and immediately get the two candidates against "sho<TAB>".

    $ git reflog sho<TAB>
    shot show
That is what I would expect.    
Thanks.
Previous: Rubén JustoNext: Rubén Justo
Message 12 of 22 in “completion for git-reflog show”
  1. 0/4 completion for git-reflog showRubén Justo, Jan 26, 2024
  2. 1/4 completion: introduce __gitcomp_subcommandRubén Justo, Jan 26, 2024
  3. Junio C HamanoJan 26, 2024
  4. Rubén JustoJan 26, 2024
  5. Junio C HamanoJan 26, 2024
  6. 2/4 completion: introduce __git_find_subcommandRubén Justo, Jan 26, 2024
  7. Junio C HamanoJan 26, 2024
  8. Rubén JustoJan 27, 2024
  9. 3/4 completion: reflog with implicit "show"Rubén Justo, Jan 26, 2024
  10. Junio C HamanoJan 26, 2024
  11. Rubén JustoJan 26, 2024
  12. Junio C HamanoFeb 21, 2024
  13. Rubén JustoFeb 21, 2024
  14. Rubén JustoFeb 29, 2024
  15. Junio C HamanoFeb 29, 2024
  16. 4/4 completion: reflog show <log-options>Rubén Justo, Jan 26, 2024
  17. 0/5 completion for git-reflog showRubén Justo, Mar 2, 2024
  18. 1/5 completion: reflog with implicit "show"Rubén Justo, Mar 2, 2024
  19. 3/5 completion: reflog show <log-options>Rubén Justo, Mar 2, 2024
  20. 2/5 completion: introduce __git_find_subcommandRubén Justo, Mar 2, 2024
  21. 4/5 completion: factor out __git_resolve_builtinsRubén Justo, Mar 2, 2024
  22. 5/5 completion: reflog subcommands and optionsRubén Justo, Mar 2, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.