@@ -556,6 +556,27 @@ struct help_unknown_cmd_config {
556556#define AUTOCORRECT_NEVER (-2)
557557#define AUTOCORRECT_IMMEDIATELY (-1)
558558
559+ static int parse_autocorrect (const char * value )
560+ {
561+ switch (git_parse_maybe_bool_text (value )) {
562+ case 1 :
563+ return AUTOCORRECT_IMMEDIATELY ;
564+ case 0 :
565+ return AUTOCORRECT_NEVER ;
566+ default : /* other random text */
567+ break ;
568+ }
569+
570+ if (!strcmp (value , "prompt" ))
571+ return AUTOCORRECT_PROMPT ;
572+ if (!strcmp (value , "never" ))
573+ return AUTOCORRECT_NEVER ;
574+ if (!strcmp (value , "immediate" ))
575+ return AUTOCORRECT_IMMEDIATELY ;
576+
577+ return 0 ;
578+ }
579+
559580static int git_unknown_cmd_config (const char * var , const char * value ,
560581 const struct config_context * ctx ,
561582 void * cb )
@@ -564,20 +585,17 @@ static int git_unknown_cmd_config(const char *var, const char *value,
564585 const char * p ;
565586
566587 if (!strcmp (var , "help.autocorrect" )) {
567- if (!value )
568- return config_error_nonbool (var );
569- if (!strcmp (value , "never" )) {
570- cfg -> autocorrect = AUTOCORRECT_NEVER ;
571- } else if (!strcmp (value , "immediate" )) {
572- cfg -> autocorrect = AUTOCORRECT_IMMEDIATELY ;
573- } else if (!strcmp (value , "prompt" )) {
574- cfg -> autocorrect = AUTOCORRECT_PROMPT ;
575- } else {
576- int v = git_config_int (var , value , ctx -> kvi );
577- cfg -> autocorrect = (v < 0 )
578- ? AUTOCORRECT_IMMEDIATELY : v ;
588+ int v = parse_autocorrect (value );
589+
590+ if (!v ) {
591+ v = git_config_int (var , value , ctx -> kvi );
592+ if (v < 0 || v == 1 )
593+ v = AUTOCORRECT_IMMEDIATELY ;
579594 }
595+
596+ cfg -> autocorrect = v ;
580597 }
598+
581599 /* Also use aliases for command lookup */
582600 if (skip_prefix (var , "alias." , & p ))
583601 add_cmdname (& cfg -> aliases , p , strlen (p ));
0 commit comments