git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] add -p: show hunk selection state when selecting hunks

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 30, 2025, 18:32 UTC
Message-ID
<xmqqqztfbcbr.fsf@gitster.g>
In-Reply-To
<aSxQhqwzT34hIjV8@Adekunles-MacBook-Air.local>
Abraham Samuel Adekunle <abrahamadekunle50@gmail.com> writes:
Show 11 quoted lines
> 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? ")
>  	},
Three comments:
 * These sets of prompts exist for each front-end that uses the
   interactive patch machinery, and we are looking at the set used
   by "git add -p".  But the "I came back here with K, or I do not
   remember which between k and K I came back here with, and I
   cannot easily tell if the hunk I am looking at is already
   selected" issue is shared with other users like "git reset -p".
 * "chmod +x Makefile && echo >>Makefile && git add -p" would ask if
   you want to stage the mode change of the path and content change
   for the path separately.  You may skip, and later come back with
   K to this question.  The same "hmph, have I selected to use
   this?" issue exists, no?
 * The existing "[choices]? " was designed to be at the very end of
   the question, so that the answer given by the user will come
   immediately after the offered choices.  Adding an overly long
   "selected" or "deselected" to make it "[choices] selected?" does
   not give us a pleasant end-user experience.

Also, after you decided on one hunk when you have two hunks, typing 'j' or 'k' would tell you "No other undecided hunk". The phrase used here, "undecided", refers to the choice between USE or SKIP. To convey the intent clearly, "Select"/"Deselect" feels a rather indirect way (i.e. "selected for use" vs "selected to skip") to say what is happening.

Ideally, if we can convey
    Stage this mode change (you previously decided to use it) [y,n,q,a,d%s,?]?
    Stage this mode change (you previously decided to skip it) [y,n,q,a,d%s,?]?
    Stage this deletion (you previously decided to use it) [y,n,q,a,d%sm,?]?
    ...

without wasting too many extra display width, that would be great, but this patch is not quite there, I am afraid to say.

Show 21 quoted lines
> @@ -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);
Previous: Abraham Samuel AdekunleNext: Abraham Samuel Adekunle
Message 2 of 25 in “add -p: show hunk selection state when selecting hunks”
  1. add -p: show hunk selection state when selecting hunksAbraham Samuel Adekunle, Nov 30, 2025
  2. Junio C HamanoNov 30, 2025
  3. Abraham Samuel AdekunleDec 1, 2025
  4. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 1, 2026
  5. Junio C HamanoJan 1, 2026
  6. Samuel AbrahamJan 2, 2026
  7. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 2, 2026
  8. Junio C HamanoJan 4, 2026
  9. Samuel AbrahamJan 4, 2026
  10. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 4, 2026
  11. SZEDER GáborJan 5, 2026
  12. Samuel AbrahamJan 5, 2026
  13. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 6, 2026
  14. Kristoffer HaugsbakkJan 6, 2026
  15. Samuel AbrahamJan 6, 2026
  16. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 6, 2026
  17. Phillip WoodJan 6, 2026
  18. Ben KnobleJan 6, 2026
  19. Junio C HamanoJan 7, 2026
  20. Samuel AbrahamJan 6, 2026
  21. Samuel AbrahamJan 6, 2026
  22. Samuel AbrahamJan 7, 2026
  23. add -p: show user's hunk decision when selecting hunksAbraham Samuel Adekunle, Jan 8, 2026
  24. Junio C HamanoJan 11, 2026
  25. Samuel AbrahamJan 11, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.