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

Re: [PATCH v8 0/2] send-email: shell completion improvements

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Oct 25, 2021, 22:44 UTC
Message-ID
<211026.86o87c1zry.gmgdl@evledraar.gmail.com>
In-Reply-To
<20211025212707.188151-1-tbperrotta@gmail.com>
On Mon, Oct 25 2021, Thiago Perrotta wrote:
>> ...I think that re-indentation is better left alone for the patch
>> readability.
>
> Reverted the `GetOptions` indentation. Noise is now gone :-)
Thanks.
Show 8 quoted lines
>> First, in your 1/3 you're adding a \n, but in 2/3 we end up with \n\n. I
>> think you can just skip 1/3, maybe mention "how it also has a "\n" in
>> the commit message.
>
> I don't quite see how this would fit into the commit message. A comment in the
> code seems to fit better to account for this detail. That's what I did, but if
> you still disagree, please elaborate where in the commit message this sentence
> should be added.
Makes sense I think, will take a look.
Show 20 quoted lines
>> You then strip out "--" arguments from the combined list, but isn't this
>> something we do need to emit? I.e. it's used as syntax by the bash
>> completion isn't it? (I just skimmed the relevant C code in
>> parse-options.c).
>
> I interpreted that standalone `--` as an extraneous / useless token. If it's
> there intentionally, then I am reverting my stripping of it. At the end of the
> day whether to include it or not is a small detail, but FYI, when I do:
>
>   $ git clone -<TAB>
>
> in bash, nothing happens. I would have expected it to be expanded to "--"
> because of the explicit "--", but it doesn't. Therefore my conclusion is that
> "--" in the output of "--git-completion-helper" is useless. Am I missing
> something? What would be the function of the standalone "--" then?
>
> From my local testing, whether the options are sorted or not, whether
> they are repeated or not, whether they follow a specific order with
> respect to "--" or not, all of those details seem not to matter. Bash
> completion seems to handle all of those cases just fine interactively.

Digging a bit more: It's for folding away options that are negated, not for completing "-<TAB>". See the examples at b221b5ab9b9 (completion: collapse extra --no-.. options, 2018-06-06).

Show 9 quoted lines
> In fact, here's another example:
>
> $ git init --git-completion-helper | tr ' ' '\n'  | grep -C1 '^--$'
> --no-template
> --
> --no-bare
>
> ...there are --no-* options both _before_ and _after_ the --. I really
> cannot see the point of the -- in the output, it seems to be just noise.

Right, because some --no-whatever we define because we've got a --whatever and it's boolean, but for others we've got a --no-whatever as the primary, as in th case of --no-template..

Show 9 quoted lines
> I readded -- to the output anyway since you requested it, but if it
> needs to follow a certain spec w.r.t. ordering, we should have tests for
> it. This specific part (the -- and the --no- order thing) of the commit
> is something I am not keen to doing though, at least not in this patch
> series; sorry, it already goes far beyond the scope of my original
> intent. Anything else you ask for that is inline with the original
> intent (like generating options programatically instead of hard-coding
> them) I am fine with though, and in fact I believe I have addressed all
> comments so far, if there's anything else I may have missed let me know.

Yeah sorry about the confusion so far, it's also been a voyage of discovery for me :)

This time around I tested with:
diff --git a/parse-options.c b/parse-options.c
index 6e0535bdaad..d659309c5e7 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -515,8 +515,6 @@ void parse_options_start(struct parse_opt_ctx_t *ctx,
 static void show_negated_gitcomp(const struct option *opts, int show_all,
                                 int nr_noopts)
 {
-       int printed_dashdash = 0;
-
        for (; opts->type != OPTION_END; opts++) {
                int has_unset_form = 0;
                const char *name;
@@ -551,10 +549,6 @@ static void show_negated_gitcomp(const struct option *opts, int show_all,
                        if (nr_noopts < 0)
                                printf(" --%s", name);
                } else if (nr_noopts >= 0) {
-                       if (nr_noopts && !printed_dashdash) {
-                               printf(" --");
-                               printed_dashdash = 1;
-                       }
                        printf(" --no-%s", opts->long_name);
                        nr_noopts++;
                }

Which will fail a test in t/t9902-completion.sh showing this specific
behavior.
Previous: Thiago PerrottaNext: Ævar Arnfjörð Bjarmason
Message 32 of 58 in “send-email: shell completion improvements”
  1. 0/3 send-email: shell completion improvementsThiago Perrotta, Aug 20, 2021
  2. 1/3 send-email: print newline for --git-completion-helperThiago Perrotta, Aug 20, 2021
  3. Junio C HamanoAug 20, 2021
  4. 0/3 send-email: shell completion improvementsThiago Perrotta, Aug 28, 2021
  5. 1/3 send-email: terminate --git-completion-helper with LFThiago Perrotta, Aug 28, 2021
  6. 2/3 send-email: move bash completions to core scriptThiago Perrotta, Aug 28, 2021
  7. Carlo ArenasAug 28, 2021
  8. send-email: move bash completions to core scriptThiago Perrotta, Sep 7, 2021
  9. Carlo ArenasSep 7, 2021
  10. 0/3 send-email: shell completion improvementsThiago Perrotta, Sep 21, 2021
  11. 1/3 send-email: terminate --git-completion-helper with LFThiago Perrotta, Sep 21, 2021
  12. 2/3 send-email: move bash completions to core scriptThiago Perrotta, Sep 21, 2021
  13. 3/3 send-email docs: add format-patch optionsThiago Perrotta, Sep 21, 2021
  14. Ævar Arnfjörð BjarmasonSep 23, 2021
  15. 0/3 send-email: shell completion improvementsThiago Perrotta, Sep 24, 2021
  16. Ævar Arnfjörð BjarmasonSep 24, 2021
  17. Thiago PerrottaSep 30, 2021
  18. 1/3 send-email: terminate --git-completion-helper with LFThiago Perrotta, Oct 7, 2021
  19. 0/3 send-email: shell completion improvementsThiago Perrotta, Oct 7, 2021
  20. 3/3 send-email docs: add format-patch optionsThiago Perrotta, Oct 7, 2021
  21. Documentation: better document format-patch options in send-emailCarlo Marcelo Arenas Belón, Oct 9, 2021
  22. Bagas SanjayaOct 9, 2021
  23. Carlo ArenasOct 9, 2021
  24. Bagas SanjayaOct 9, 2021
  25. Junio C HamanoOct 10, 2021
  26. 2/3 send-email: programmatically generate bash completionsThiago Perrotta, Oct 7, 2021
  27. Carlo Marcelo Arenas BelónOct 9, 2021
  28. 0/3 send-email: shell completion improvementsThiago Perrotta, Oct 11, 2021
  29. Ævar Arnfjörð BjarmasonOct 11, 2021
  30. send-email: programmatically generate bash completionsThiago Perrotta, Oct 11, 2021
  31. 0/2 send-email: shell completion improvementsThiago Perrotta, Oct 25, 2021
  32. Ævar Arnfjörð BjarmasonOct 25, 2021
  33. Ævar Arnfjörð BjarmasonOct 26, 2021
  34. Junio C HamanoOct 28, 2021
  35. 1/2 send-email: programmatically generate bash completionsThiago Perrotta, Oct 25, 2021
  36. 2/2 send-email docs: add format-patch optionsThiago Perrotta, Oct 25, 2021
  37. 1/3 send-email: terminate --git-completion-helper with LFThiago Perrotta, Oct 11, 2021
  38. 2/3 send-email: programmatically generate bash completionsThiago Perrotta, Oct 11, 2021
  39. 3/3 send-email docs: add format-patch optionsThiago Perrotta, Oct 11, 2021
  40. 1/3 send-email: terminate --git-completion-helper with LFThiago Perrotta, Sep 24, 2021
  41. 2/3 send-email: programmatically generate bash completionsThiago Perrotta, Sep 24, 2021
  42. 3/3 send-email docs: add format-patch optionsThiago Perrotta, Sep 24, 2021
  43. Bagas SanjayaSep 24, 2021
  44. Carlo ArenasSep 24, 2021
  45. Bagas SanjayaSep 24, 2021
  46. Carlo ArenasSep 24, 2021
  47. Junio C HamanoSep 24, 2021
  48. Carlo ArenasSep 24, 2021
  49. Junio C HamanoSep 24, 2021
  50. Bagas SanjayaSep 25, 2021
  51. Junio C HamanoSep 25, 2021
  52. Carlo Marcelo Arenas BelónSep 25, 2021
  53. Junio C HamanoSep 29, 2021
  54. 3/3 send-email docs: add format-patch optionsThiago Perrotta, Aug 28, 2021
  55. Bagas SanjayaAug 28, 2021
  56. 2/3 send-email: move bash completions to the perl scriptThiago Perrotta, Aug 20, 2021
  57. 3/3 send-email docs: mention format-patch optionsThiago Perrotta, Aug 20, 2021
  58. Junio C HamanoAug 20, 2021

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.