diff mbox series

[v2,08/20] parse-options: drop leading space from '--git-completion-helper' output

Message ID 20220819160411.1791200-9-szeder.dev@gmail.com (mailing list archive)
State Accepted
Commit dc9f98832b849ee05b84bad1a55f5e04b82d0520
Headers show
Series parse-options: handle subcommands | expand

Commit Message

SZEDER Gábor Aug. 19, 2022, 4:03 p.m. UTC
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(-)

Comments

Ævar Arnfjörð Bjarmason Aug. 19, 2022, 5:30 p.m. UTC | #1
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);
SZEDER Gábor Aug. 19, 2022, 6:35 p.m. UTC | #2
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 mbox series

Patch

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);