]> git.ipfire.org Git - thirdparty/git.git/commitdiff
help: show the suggested command when help.autocorrect is false
authorDavid Aguilar <davvid@gmail.com>
Sat, 1 Feb 2025 21:33:18 +0000 (13:33 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 3 Feb 2025 23:22:03 +0000 (15:22 -0800)
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 <gitster@pobox.com>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config/help.txt
help.c
t/t9003-help-autocorrect.sh

index a4c6079af81e6c66bbe53fc8cdcea2479ed07d86..676ba3a55f75a44d3db301555f8e982c1f692c02 100644 (file)
@@ -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 7148963e468cd2df9cbbd4f1a7aa3df9360f46bf..55425c0d9789405a3bb3feb00b79e5816ad8c13a 100644 (file)
--- 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,
index 85a5074b5e2cb74bebdfcfc1f7d95c2a881eef78..5ebfc00f523d69760f368b0c0ab974136b1fc0e6 100755 (executable)
@@ -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