Thread (16 messages) flat view 16 messages, 7 authors, 2016-06-15

Re: [TOY PATCH] git wrapper: show similar command names for an unknown command

From: Alex Riesen <hidden>
Date: 2016-06-15 22:44:42
Subsystem: the rest · Maintainer: Linus Torvalds

Johannes Schindelin, Thu, Jun 05, 2008 08:48:40 +0200:
A typical output would now look like this:

	$ git reabse
	git: 'reabse' is not a git-command. See 'git --help'.

	Did you mean one of these?
		rebase
		merge-base
		rev-parse
		remote
		rerere
That's really cool :) And I find it useful (and already applied it to
my tree). For me, it works like a simple reminder about what I was
about to do. Helps when working on many things at the same time
(typical typo: mrge. And your patch shows it as the first hit).

BTW, you probably want to restrict the number of lines output.
For instance, "git ma" (am, printed correctly in the first line)
lists around 30 commands, which scrolls clear a 25 line terminal
and is a lot of output anyway. I tried it with at most 5 hints:
diff --git a/help.c b/help.c
index ac29225..765eed8 100644
--- a/help.c
+++ b/help.c
@@ -640,7 +640,7 @@ static int levenshtein_compare(const void *p1, const void *p2)
 
 void help_unknown_cmd(const char *cmd)
 {
-	int i, header_shown = 0;
+	int i, header_shown = 0, listed = 0;
 
 	fprintf(stderr, "git: '%s' is not a git-command. See 'git --help'.\n", cmd);
 
@@ -667,6 +667,8 @@ void help_unknown_cmd(const char *cmd)
 			header_shown = 1;
 		}
 		fprintf(stderr, "\t%s\n", main_cmds.names[i]->name);
+		if (++listed >= 5)
+			break;
 	}
 
 	exit(1);
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help