[PATCH] add -p: show hunk selection state when selecting hunks
- From
Abraham Samuel Adekunle <abrahamadekunle50@gmail.com>
- Date
- Nov 30, 2025, 15:06 UTC
- Message-ID
- <aSxQhqwzT34hIjV8@Adekunles-MacBook-Air.local>
When selecting hunks to stage or not to stage, there is no way to know if a hunk has been selected or not when navigating through the previous and next hunks using K/J respectively.
Improve the UI to show whether a particular hunk has been selected or deselected to improve clarity and aid the navigation process.
Reported-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Abraham Samuel Adekunle <abrahamadekunle50@gmail.com> --- add-patch.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/add-patch.c b/add-patch.c index 173a53241e..e70e390506 100644 --- a/add-patch.c +++ b/add-patch.c @@ -45,7 +45,7 @@ static struct patch_mode patch_mode_add = { N_("Stage mode change [y,n,q,a,d%s,?]? "), N_("Stage deletion [y,n,q,a,d%s,?]? "), N_("Stage addition [y,n,q,a,d%s,?]? "), - N_("Stage this hunk [y,n,q,a,d%s,?]? ") + N_("Stage this hunk [y,n,q,a,d%s,?] %s? ") }, .edit_hunk_hint = N_("If the patch applies cleanly, the edited hunk " "will immediately be marked for staging."), @@ -1564,7 +1564,19 @@ static int patch_update_file(struct add_p_state *s, (uintmax_t)(file_diff->hunk_nr ? file_diff->hunk_nr : 1)); - printf(_(s->mode->prompt_mode[prompt_mode_type]), + if (prompt_mode_type == PROMPT_HUNK) { + const char *state = ""; + if (file_diff->hunk_nr) { + if (hunk->use == USE_HUNK) + state = _("[selected]"); + else if (hunk->use == SKIP_HUNK) + state = _("[deselected]"); + } + printf(_(s->mode->prompt_mode[prompt_mode_type]), + s->buf.buf, state); + } + else + printf(_(s->mode->prompt_mode[prompt_mode_type]), s->buf.buf); if (*s->s.reset_color_interactive) fputs(s->s.reset_color_interactive, stdout);
-- 2.39.5 (Apple Git-154)