threads / patch / 50369

patchhelp: align the longest command in the command listing

Subject: [PATCH] help: align the longest command in the command listing

## tl;dr

3 messages between Jan 31, 2019 and Feb 1, 2019. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Nguyễn Thái Ngọc Duy· Jan 31, 2019, 09:23 UTC · lore

"longest" is used to determine how many extra spaces we need to print to keep the command description aligned. For the longest command, we should print no extra space instead of one, or we'll get unaligned output like this (notice the "checkout" line):

    grow, mark and tweak your common history
       branch     List, create, or delete branches
       checkout    Switch branches or restore working tree files
       commit     Record changes to the repository
       diff       Show changes between commits, commit and ...
       merge      Join two or more development histories together
       rebase     Reapply commits on top of another base tip
       tag        Create, list, delete or verify a tag ...
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 help.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
Show changes to help.c +2 −1
diff --git a/help.c b/help.c
index ff05fd22df..520c9080e8 100644
--- a/help.c
+++ b/help.c
@@ -85,7 +85,8 @@ static void print_command_list(const struct cmdname_help *cmds,
 		if (cmds[i].category & mask) {
 			size_t len = strlen(cmds[i].name);
 			printf("   %s   ", cmds[i].name);
-			mput_char(' ', longest > len ? longest - len : 1);
+			if (longest > len)
+				mput_char(' ', longest - len);
 			puts(_(cmds[i].help));
 		}
 	}
-- 
2.20.1.682.gd5861c6d90
Johannes Schindelin· Feb 1, 2019, 07:42 UTC · re: Nguyễn Thái Ngọc Duy · lore

Re: [PATCH] help: align the longest command in the command listing

Hi Duy,
On Thu, 31 Jan 2019, Nguyễn Thái Ngọc Duy wrote:
Show 30 quoted lines
> "longest" is used to determine how many extra spaces we need to print
> to keep the command description aligned. For the longest command, we
> should print no extra space instead of one, or we'll get unaligned
> output like this (notice the "checkout" line):
> 
>     grow, mark and tweak your common history
>        branch     List, create, or delete branches
>        checkout    Switch branches or restore working tree files
>        commit     Record changes to the repository
>        diff       Show changes between commits, commit and ...
>        merge      Join two or more development histories together
>        rebase     Reapply commits on top of another base tip
>        tag        Create, list, delete or verify a tag ...
> 
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
>  help.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/help.c b/help.c
> index ff05fd22df..520c9080e8 100644
> --- a/help.c
> +++ b/help.c
> @@ -85,7 +85,8 @@ static void print_command_list(const struct cmdname_help *cmds,
>  		if (cmds[i].category & mask) {
>  			size_t len = strlen(cmds[i].name);
>  			printf("   %s   ", cmds[i].name);
> -			mput_char(' ', longest > len ? longest - len : 1);
> +			if (longest > len)
> +				mput_char(' ', longest - len);
Why not simply replace the `1` by `0`?

Ciao, Dscho

Show 7 quoted lines
>  			puts(_(cmds[i].help));
>  		}
>  	}
> -- 
> 2.20.1.682.gd5861c6d90
> 
> 
Duy Nguyen· Feb 1, 2019, 08:24 UTC · re: Johannes Schindelin · lore

Re: [PATCH] help: align the longest command in the command listing

On Fri, Feb 1, 2019 at 2:42 PM Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:

Show 13 quoted lines
> > diff --git a/help.c b/help.c
> > index ff05fd22df..520c9080e8 100644
> > --- a/help.c
> > +++ b/help.c
> > @@ -85,7 +85,8 @@ static void print_command_list(const struct cmdname_help *cmds,
> >               if (cmds[i].category & mask) {
> >                       size_t len = strlen(cmds[i].name);
> >                       printf("   %s   ", cmds[i].name);
> > -                     mput_char(' ', longest > len ? longest - len : 1);
> > +                     if (longest > len)
> > +                             mput_char(' ', longest - len);
>
> Why not simply replace the `1` by `0`?

While it makes the diff shorter, I think it's a bit more confusing (why add zero spaces?)

-- 
Duy

← back to recent threads