2222#include "repository.h"
2323#include "alias.h"
2424#include "utf8.h"
25+ #include "autocorrect.h"
2526
2627#ifndef NO_CURL
2728#include "git-curl-compat.h" /* For LIBCURL_VERSION only */
@@ -541,34 +542,6 @@ struct help_unknown_cmd_config {
541542 struct cmdnames aliases ;
542543};
543544
544- #define AUTOCORRECT_SHOW (-4)
545- #define AUTOCORRECT_PROMPT (-3)
546- #define AUTOCORRECT_NEVER (-2)
547- #define AUTOCORRECT_IMMEDIATELY (-1)
548-
549- static int parse_autocorrect (const char * value )
550- {
551- switch (git_parse_maybe_bool_text (value )) {
552- case 1 :
553- return AUTOCORRECT_IMMEDIATELY ;
554- case 0 :
555- return AUTOCORRECT_SHOW ;
556- default : /* other random text */
557- break ;
558- }
559-
560- if (!strcmp (value , "prompt" ))
561- return AUTOCORRECT_PROMPT ;
562- if (!strcmp (value , "never" ))
563- return AUTOCORRECT_NEVER ;
564- if (!strcmp (value , "immediate" ))
565- return AUTOCORRECT_IMMEDIATELY ;
566- if (!strcmp (value , "show" ))
567- return AUTOCORRECT_SHOW ;
568-
569- return 0 ;
570- }
571-
572545static int git_unknown_cmd_config (const char * var , const char * value ,
573546 const struct config_context * ctx ,
574547 void * cb )
@@ -577,17 +550,7 @@ static int git_unknown_cmd_config(const char *var, const char *value,
577550 const char * subsection , * key ;
578551 size_t subsection_len ;
579552
580- if (!strcmp (var , "help.autocorrect" )) {
581- int v = parse_autocorrect (value );
582-
583- if (!v ) {
584- v = git_config_int (var , value , ctx -> kvi );
585- if (v < 0 || v == 1 )
586- v = AUTOCORRECT_IMMEDIATELY ;
587- }
588-
589- cfg -> autocorrect = v ;
590- }
553+ autocorrect_resolve_config (var , value , ctx , & cfg -> autocorrect );
591554
592555 /* Also use aliases for command lookup */
593556 if (!parse_config_key (var , "alias" , & subsection , & subsection_len ,
@@ -724,27 +687,8 @@ char *help_unknown_cmd(const char *cmd)
724687 _ ("WARNING: You called a Git command named '%s', "
725688 "which does not exist." ),
726689 cmd );
727- if (cfg .autocorrect == AUTOCORRECT_IMMEDIATELY )
728- fprintf_ln (stderr ,
729- _ ("Continuing under the assumption that "
730- "you meant '%s'." ),
731- assumed );
732- else if (cfg .autocorrect == AUTOCORRECT_PROMPT ) {
733- char * answer ;
734- struct strbuf msg = STRBUF_INIT ;
735- strbuf_addf (& msg , _ ("Run '%s' instead [y/N]? " ), assumed );
736- answer = git_prompt (msg .buf , PROMPT_ECHO );
737- strbuf_release (& msg );
738- if (!(starts_with (answer , "y" ) ||
739- starts_with (answer , "Y" )))
740- exit (1 );
741- } else {
742- fprintf_ln (stderr ,
743- _ ("Continuing in %0.1f seconds, "
744- "assuming that you meant '%s'." ),
745- (float )cfg .autocorrect /10.0 , assumed );
746- sleep_millisec (cfg .autocorrect * 100 );
747- }
690+
691+ autocorrect_confirm (cfg .autocorrect , assumed );
748692
749693 cmdnames_release (& cfg .aliases );
750694 cmdnames_release (& main_cmds );
0 commit comments