Message ID | 20220819160411.1791200-9-szeder.dev@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | dc9f98832b849ee05b84bad1a55f5e04b82d0520 |
Headers | show |
Series | parse-options: handle subcommands | expand |
On Fri, Aug 19 2022, SZEDER Gábor wrote: > subcommands) a tad more complex, so I wanted to test the result. The > test would have to account for the presence of that leading space, > which bugged my OCD, so let's get rid of it. On the subject of OCD it... > Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> > --- > parse-options.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/parse-options.c b/parse-options.c > index a0a2cf98fa..8748f88e6f 100644 > --- a/parse-options.c > +++ b/parse-options.c > @@ -620,7 +620,8 @@ static int show_gitcomp(const struct option *opts, int show_all) > suffix = "="; > if (starts_with(opts->long_name, "no-")) > nr_noopts++; > - printf(" --%s%s", opts->long_name, suffix); > + printf("%s--%s%s", opts == original_opts ? "" : " ", > + opts->long_name, suffix); > } > show_negated_gitcomp(original_opts, show_all, -1); > show_negated_gitcomp(original_opts, show_all, nr_noopts); ...bugs me a bit that we have a "suffix" variable, but not a "prefix" for this, maybe this? We could also make the prefix a "const char *const" to indicate that we don't modify it in the "for" body: diff --git a/parse-options.c b/parse-options.c index edf55d3ef5d..3000121e5c0 100644 --- a/parse-options.c +++ b/parse-options.c @@ -589,6 +589,7 @@ static int show_gitcomp(const struct option *opts, int show_all) int nr_noopts = 0; for (; opts->type != OPTION_END; opts++) { + const char *prefix = opts == original_opts ? "" : " "; const char *suffix = ""; if (!opts->long_name) @@ -620,7 +621,7 @@ static int show_gitcomp(const struct option *opts, int show_all) suffix = "="; if (starts_with(opts->long_name, "no-")) nr_noopts++; - printf(" --%s%s", opts->long_name, suffix); + printf("%s--%s%s", opts->long_name, prefix, suffix); } show_negated_gitcomp(original_opts, show_all, -1); show_negated_gitcomp(original_opts, show_all, nr_noopts);
On Fri, Aug 19, 2022 at 07:30:13PM +0200, Ævar Arnfjörð Bjarmason wrote: > > On Fri, Aug 19 2022, SZEDER Gábor wrote: > > > subcommands) a tad more complex, so I wanted to test the result. The > > test would have to account for the presence of that leading space, > > which bugged my OCD, so let's get rid of it. > > On the subject of OCD it... > > > Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> > > --- > > parse-options.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/parse-options.c b/parse-options.c > > index a0a2cf98fa..8748f88e6f 100644 > > --- a/parse-options.c > > +++ b/parse-options.c > > @@ -620,7 +620,8 @@ static int show_gitcomp(const struct option *opts, int show_all) > > suffix = "="; > > if (starts_with(opts->long_name, "no-")) > > nr_noopts++; > > - printf(" --%s%s", opts->long_name, suffix); > > + printf("%s--%s%s", opts == original_opts ? "" : " ", > > + opts->long_name, suffix); > > } > > show_negated_gitcomp(original_opts, show_all, -1); > > show_negated_gitcomp(original_opts, show_all, nr_noopts); > > ...bugs me a bit that we have a "suffix" variable, but not a "prefix" > for this That space acts as a separator, so calling it prefix would be misleading.
diff --git a/parse-options.c b/parse-options.c index a0a2cf98fa..8748f88e6f 100644 --- a/parse-options.c +++ b/parse-options.c @@ -620,7 +620,8 @@ static int show_gitcomp(const struct option *opts, int show_all) suffix = "="; if (starts_with(opts->long_name, "no-")) nr_noopts++; - printf(" --%s%s", opts->long_name, suffix); + printf("%s--%s%s", opts == original_opts ? "" : " ", + opts->long_name, suffix); } show_negated_gitcomp(original_opts, show_all, -1); show_negated_gitcomp(original_opts, show_all, nr_noopts);
The output of 'git <cmd> --git-completion-helper' always starts with a space, e.g.: $ git config --git-completion-helper --global --system --local [...] This doesn't matter for the completion script, because field splitting discards that space anyway. However, later patches in this series will teach parse-options to handle subcommands, and subcommands will be included in the completion helper output as well. This will make the loop printing options (and subcommands) a tad more complex, so I wanted to test the result. The test would have to account for the presence of that leading space, which bugged my OCD, so let's get rid of it. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> --- parse-options.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)