built-in add -p: offer a helpful error message when hunk navigation failed
... just like the Perl version currently does... Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
12c24cf850
commit
7584dd3c66
34
add-patch.c
34
add-patch.c
|
@ -34,6 +34,18 @@ struct add_p_state {
|
||||||
size_t hunk_nr, hunk_alloc;
|
size_t hunk_nr, hunk_alloc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void err(struct add_p_state *s, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start(args, fmt);
|
||||||
|
fputs(s->s.error_color, stderr);
|
||||||
|
vfprintf(stderr, fmt, args);
|
||||||
|
fputs(s->s.reset_color, stderr);
|
||||||
|
fputc('\n', stderr);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
static void setup_child_process(struct add_p_state *s,
|
static void setup_child_process(struct add_p_state *s,
|
||||||
struct child_process *cp, ...)
|
struct child_process *cp, ...)
|
||||||
{
|
{
|
||||||
|
@ -368,17 +380,27 @@ soft_increment:
|
||||||
if (hunk->use == UNDECIDED_HUNK)
|
if (hunk->use == UNDECIDED_HUNK)
|
||||||
hunk->use = SKIP_HUNK;
|
hunk->use = SKIP_HUNK;
|
||||||
}
|
}
|
||||||
} else if (hunk_index && s->answer.buf[0] == 'K')
|
} else if (s->answer.buf[0] == 'K') {
|
||||||
|
if (hunk_index)
|
||||||
hunk_index--;
|
hunk_index--;
|
||||||
else if (hunk_index + 1 < s->hunk_nr &&
|
else
|
||||||
s->answer.buf[0] == 'J')
|
err(s, _("No previous hunk"));
|
||||||
|
} else if (s->answer.buf[0] == 'J') {
|
||||||
|
if (hunk_index + 1 < s->hunk_nr)
|
||||||
hunk_index++;
|
hunk_index++;
|
||||||
else if (undecided_previous >= 0 &&
|
else
|
||||||
s->answer.buf[0] == 'k')
|
err(s, _("No next hunk"));
|
||||||
|
} else if (s->answer.buf[0] == 'k') {
|
||||||
|
if (undecided_previous >= 0)
|
||||||
hunk_index = undecided_previous;
|
hunk_index = undecided_previous;
|
||||||
else if (undecided_next >= 0 && s->answer.buf[0] == 'j')
|
else
|
||||||
|
err(s, _("No previous hunk"));
|
||||||
|
} else if (s->answer.buf[0] == 'j') {
|
||||||
|
if (undecided_next >= 0)
|
||||||
hunk_index = undecided_next;
|
hunk_index = undecided_next;
|
||||||
else
|
else
|
||||||
|
err(s, _("No next hunk"));
|
||||||
|
} else
|
||||||
color_fprintf(stdout, s->s.help_color,
|
color_fprintf(stdout, s->s.help_color,
|
||||||
_(help_patch_text));
|
_(help_patch_text));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue