From e21bf2c4314840dba4f45c6e7bbc96a6fc0a8f61 Mon Sep 17 00:00:00 2001 From: David Aguilar Date: Sat, 1 Feb 2025 13:33:18 -0800 Subject: [PATCH 1/2] help: show the suggested command when help.autocorrect is false Make the handling of false boolean values for help.autocorrect consistent with the handling of value 0 by showing the suggested commands but not running them. Suggested-by: Junio C Hamano Signed-off-by: David Aguilar Signed-off-by: Junio C Hamano --- Documentation/config/help.txt | 4 ++-- help.c | 6 ++++-- t/t9003-help-autocorrect.sh | 17 ++++++++++------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Documentation/config/help.txt b/Documentation/config/help.txt index a4c6079af8..676ba3a55f 100644 --- a/Documentation/config/help.txt +++ b/Documentation/config/help.txt @@ -11,12 +11,12 @@ help.autoCorrect:: If git detects typos and can identify exactly one valid command similar to the error, git will try to suggest the correct command or even run the suggestion automatically. Possible config values are: - - 0: show the suggested command (default). + - 0, "false", "off", "no": show the suggested command (default). - 1, "true", "on", "yes", "immediate": run the suggested command immediately. - positive number > 1: run the suggested command after specified deciseconds (0.1 sec). - - "false", "off", "no", "never": don't run or show any suggested command. + - "never": don't run or show any suggested command. - "prompt": show the suggestion and prompt for confirmation to run the command. diff --git a/help.c b/help.c index 7148963e46..55425c0d97 100644 --- a/help.c +++ b/help.c @@ -552,6 +552,7 @@ struct help_unknown_cmd_config { struct cmdnames aliases; }; +#define AUTOCORRECT_SHOW (-4) #define AUTOCORRECT_PROMPT (-3) #define AUTOCORRECT_NEVER (-2) #define AUTOCORRECT_IMMEDIATELY (-1) @@ -562,7 +563,7 @@ static int parse_autocorrect(const char *value) case 1: return AUTOCORRECT_IMMEDIATELY; case 0: - return AUTOCORRECT_NEVER; + return AUTOCORRECT_SHOW; default: /* other random text */ break; } @@ -713,7 +714,8 @@ char *help_unknown_cmd(const char *cmd) n++) ; /* still counting */ } - if (cfg.autocorrect && n == 1 && SIMILAR_ENOUGH(best_similarity)) { + if (cfg.autocorrect && cfg.autocorrect != AUTOCORRECT_SHOW && n == 1 && + SIMILAR_ENOUGH(best_similarity)) { char *assumed = xstrdup(main_cmds.names[0]->name); fprintf_ln(stderr, diff --git a/t/t9003-help-autocorrect.sh b/t/t9003-help-autocorrect.sh index 85a5074b5e..5ebfc00f52 100755 --- a/t/t9003-help-autocorrect.sh +++ b/t/t9003-help-autocorrect.sh @@ -28,15 +28,18 @@ test_expect_success 'setup' ' test_cmp expect actual ' -test_expect_success 'autocorrect showing candidates' ' - git config help.autocorrect 0 && +for show in false no off 0 +do + test_expect_success 'autocorrect showing candidates' ' + git config help.autocorrect $show && - test_must_fail git lfg 2>actual && - grep "^ lgf" actual && + test_must_fail git lfg 2>actual && + grep "^ lgf" actual && - test_must_fail git distimdist 2>actual && - grep "^ distimdistim" actual -' + test_must_fail git distimdist 2>actual && + grep "^ distimdistim" actual + ' +done for immediate in -1 immediate do From e4542d8b35788c355164794457d46667378e9354 Mon Sep 17 00:00:00 2001 From: David Aguilar Date: Sat, 1 Feb 2025 13:33:19 -0800 Subject: [PATCH 2/2] help: add "show" as a valid configuration value Add a literal value for showing the suggested autocorrection for consistency with the rest of the help.autocorrect options. Signed-off-by: David Aguilar Signed-off-by: Junio C Hamano --- Documentation/config/help.txt | 2 +- help.c | 2 ++ t/t9003-help-autocorrect.sh | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Documentation/config/help.txt b/Documentation/config/help.txt index 676ba3a55f..b369589cec 100644 --- a/Documentation/config/help.txt +++ b/Documentation/config/help.txt @@ -11,7 +11,7 @@ help.autoCorrect:: If git detects typos and can identify exactly one valid command similar to the error, git will try to suggest the correct command or even run the suggestion automatically. Possible config values are: - - 0, "false", "off", "no": show the suggested command (default). + - 0, "false", "off", "no", "show": show the suggested command (default). - 1, "true", "on", "yes", "immediate": run the suggested command immediately. - positive number > 1: run the suggested command after specified diff --git a/help.c b/help.c index 55425c0d97..8d91afe851 100644 --- a/help.c +++ b/help.c @@ -574,6 +574,8 @@ static int parse_autocorrect(const char *value) return AUTOCORRECT_NEVER; if (!strcmp(value, "immediate")) return AUTOCORRECT_IMMEDIATELY; + if (!strcmp(value, "show")) + return AUTOCORRECT_SHOW; return 0; } diff --git a/t/t9003-help-autocorrect.sh b/t/t9003-help-autocorrect.sh index 5ebfc00f52..8da318d2b5 100755 --- a/t/t9003-help-autocorrect.sh +++ b/t/t9003-help-autocorrect.sh @@ -28,7 +28,7 @@ test_expect_success 'setup' ' test_cmp expect actual ' -for show in false no off 0 +for show in false no off 0 show do test_expect_success 'autocorrect showing candidates' ' git config help.autocorrect $show &&