@@ -556,6 +556,27 @@ struct help_unknown_cmd_config {
556
556
#define AUTOCORRECT_NEVER (-2)
557
557
#define AUTOCORRECT_IMMEDIATELY (-1)
558
558
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
+
559
580
static int git_unknown_cmd_config (const char * var , const char * value ,
560
581
const struct config_context * ctx ,
561
582
void * cb )
@@ -564,20 +585,17 @@ static int git_unknown_cmd_config(const char *var, const char *value,
564
585
const char * p ;
565
586
566
587
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 ;
579
594
}
595
+
596
+ cfg -> autocorrect = v ;
580
597
}
598
+
581
599
/* Also use aliases for command lookup */
582
600
if (skip_prefix (var , "alias." , & p ))
583
601
add_cmdname (& cfg -> aliases , p , strlen (p ));
0 commit comments