@@ -11,6 +11,7 @@ struct add_i_state {
1111 struct repository * r ;
1212 int use_color ;
1313 char header_color [COLOR_MAXLEN ];
14+ char help_color [COLOR_MAXLEN ];
1415};
1516
1617static void init_color (struct repository * r , struct add_i_state * s ,
@@ -43,6 +44,7 @@ static int init_add_i_state(struct repository *r, struct add_i_state *s)
4344 s -> use_color = want_color (s -> use_color );
4445
4546 init_color (r , s , "header" , s -> header_color , GIT_COLOR_BOLD );
47+ init_color (r , s , "help" , s -> help_color , GIT_COLOR_BOLD_RED );
4648
4749 return 0 ;
4850}
@@ -104,6 +106,7 @@ struct list_and_choose_options {
104106 struct list_options list_opts ;
105107
106108 const char * prompt ;
109+ void (* print_help )(struct add_i_state * s );
107110};
108111
109112/*
@@ -138,6 +141,11 @@ static ssize_t list_and_choose(struct prefix_item **items, size_t nr,
138141 if (!input .len )
139142 break ;
140143
144+ if (!strcmp (input .buf , "?" )) {
145+ opts -> print_help (s );
146+ continue ;
147+ }
148+
141149 p = input .buf ;
142150 for (;;) {
143151 size_t sep = strcspn (p , " \t\r\n," );
@@ -424,12 +432,24 @@ struct command_item {
424432 struct file_list * files , struct list_options * opts );
425433};
426434
435+ static void command_prompt_help (struct add_i_state * s )
436+ {
437+ const char * help_color = s -> help_color ;
438+ color_fprintf_ln (stdout , help_color , "%s" , _ ("Prompt help:" ));
439+ color_fprintf_ln (stdout , help_color , "1 - %s" ,
440+ _ ("select a numbered item" ));
441+ color_fprintf_ln (stdout , help_color , "foo - %s" ,
442+ _ ("select item based on unique prefix" ));
443+ color_fprintf_ln (stdout , help_color , " - %s" ,
444+ _ ("(empty) select nothing" ));
445+ }
446+
427447int run_add_i (struct repository * r , const struct pathspec * ps )
428448{
429449 struct add_i_state s = { NULL };
430450 struct list_and_choose_options main_loop_opts = {
431451 { 4 , N_ ("*** Commands ***" ), print_command_item , NULL },
432- N_ ("What now" )
452+ N_ ("What now" ), command_prompt_help
433453 };
434454 struct command_item
435455 status = { { "status" }, run_status };
0 commit comments