[PATCH] Add help.autocorrect to enable/disable autocorrecting
- From
Alex Riesen <raa.lkml@gmail.com>
- Date
- Jul 22, 2008, 21:26 UTC
- Message-ID
- <20080722212633.GF5113@blimp.local>
- In-Reply-To
- <alpine.DEB.1.00.0807222207110.8986@racer>
It is off by default, to avoid scaring people unless they asked to. --- Johannes Schindelin, Tue, Jul 22, 2008 23:08:19 +0200:
Show 11 quoted lines
> On Tue, 22 Jul 2008, Alex Riesen wrote:
>
> > + if (autocorrect && (main_cmds.cnt < 2 ||
> > + best_similarity < similarity(main_cmds.names[1]->name))) {
> > if (!*cwd)
> > exit(1);
> > if (chdir(cwd))
>
> In that case, you need to put in the "one of these" / "this" conditional
> again, which I ripped out because I do not need it any more.
> Of course, missed it. Like this, then.
help.c | 20 ++++++++++++++------ 1 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/help.c b/help.c index 480befe..cf6b459 100644 --- a/help.c +++ b/help.c @@ -28,6 +28,7 @@ enum help_format { HELP_FORMAT_WEB, }; +static int autocorrect; static int show_all = 0; static enum help_format help_format = HELP_FORMAT_MAN; static struct option builtin_help_options[] = { @@ -269,6 +270,8 @@ static int git_help_config(const char *var, const char *value, void *cb) } if (!prefixcmp(var, "man.")) return add_man_viewer_info(var, value); + if (!strcmp(var, "help.autocorrect")) + autocorrect = git_config_bool(var,value); return git_default_config(var, value, cb); } @@ -704,9 +707,10 @@ const char *help_unknown_cmd(const char *cmd) if (!main_cmds.cnt) die ("Uh oh. Your system reports no Git commands at all."); + git_config(git_help_config, NULL); best_similarity = similarity(main_cmds.names[0]->name); - if (main_cmds.cnt < 2 || best_similarity < - similarity(main_cmds.names[1]->name)) { + if (autocorrect && (main_cmds.cnt < 2 || + best_similarity < similarity(main_cmds.names[1]->name))) { if (!*cwd) exit(1); if (chdir(cwd)) @@ -721,10 +725,14 @@ const char *help_unknown_cmd(const char *cmd) fprintf(stderr, "git: '%s' is not a git-command. See 'git --help'.\n", cmd); if (best_similarity < 6) { - fprintf(stderr, "\nDid you mean one of these?\n"); - - for (i = 0; i < main_cmds.cnt && best_similarity == - similarity(main_cmds.names[i]->name); i++) + int n = 0; + while (n < main_cmds.cnt && + best_similarity == similarity(main_cmds.names[n]->name)) + ++n; + fprintf(stderr, "\nDid you mean %s?\n", + n < 2 ? "this": "one of these"); + + for (i = 0; i < n; i++) fprintf(stderr, "\t%s\n", main_cmds.names[i]->name); }
-- 1.6.0.rc0.48.ga184