|
7 | 7 | #include "color.h" |
8 | 8 | #include "diff.h" |
9 | 9 |
|
| 10 | +enum prompt_mode_type { |
| 11 | + PROMPT_MODE_CHANGE = 0, PROMPT_DELETION, PROMPT_HUNK |
| 12 | +}; |
| 13 | + |
| 14 | +static const char *prompt_mode[] = { |
| 15 | + N_("Stage mode change [y,n,a,d%s,?]? "), |
| 16 | + N_("Stage deletion [y,n,a,d%s,?]? "), |
| 17 | + N_("Stage this hunk [y,n,a,d%s,?]? ") |
| 18 | +}; |
| 19 | + |
10 | 20 | struct hunk_header { |
11 | 21 | unsigned long old_offset, old_count, new_offset, new_count; |
12 | 22 | /* |
@@ -390,6 +400,7 @@ static int patch_update_file(struct add_p_state *s, |
390 | 400 | char ch; |
391 | 401 | struct child_process cp = CHILD_PROCESS_INIT; |
392 | 402 | int colored = !!s->colored.len; |
| 403 | + enum prompt_mode_type prompt_mode_type; |
393 | 404 |
|
394 | 405 | if (!file_diff->hunk_nr) |
395 | 406 | return 0; |
@@ -434,9 +445,16 @@ static int patch_update_file(struct add_p_state *s, |
434 | 445 | strbuf_addstr(&s->buf, ",j"); |
435 | 446 | if (hunk_index + 1 < file_diff->hunk_nr) |
436 | 447 | strbuf_addstr(&s->buf, ",J"); |
| 448 | + |
| 449 | + if (file_diff->deleted) |
| 450 | + prompt_mode_type = PROMPT_DELETION; |
| 451 | + else if (file_diff->mode_change && !hunk_index) |
| 452 | + prompt_mode_type = PROMPT_MODE_CHANGE; |
| 453 | + else |
| 454 | + prompt_mode_type = PROMPT_HUNK; |
| 455 | + |
437 | 456 | color_fprintf(stdout, s->s.prompt_color, |
438 | | - _("Stage this hunk [y,n,a,d%s,?]? "), |
439 | | - s->buf.buf); |
| 457 | + _(prompt_mode[prompt_mode_type]), s->buf.buf); |
440 | 458 | fflush(stdout); |
441 | 459 | if (strbuf_getline(&s->answer, stdin) == EOF) |
442 | 460 | break; |
|
0 commit comments