|
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