[PATCH v3 0/2] improve interactive-patch
- From
Rubén Justo <rjusto@gmail.com>
- Date
- Mar 28, 2024, 01:10 UTC
- Message-ID
- <60d978d0-f69a-4b65-b4ba-d30dac8f112a@gmail.com>
- In-Reply-To
- <6f2ed406-2152-476b-b463-3010afe7e11e@gmail.com>
Let's reduce the verbosity in the interactive-patch process, in order to make it less confusing.
Rubén Justo (2): add-patch: introduce 'p' in interactive-patch add-patch: do not print hunks repeatedly
Documentation/git-add.txt | 1 + add-patch.c | 19 +++++++++++++++---- t/t3701-add-interactive.sh | 22 +++++++++++----------- 3 files changed, 27 insertions(+), 15 deletions(-)
Range-diff against v2:
1: bbb3bbea1b ! 1: ca2777cb12 add-patch: introduce 'p' in interactive-patch
@@ Documentation/git-add.txt: patch::
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
-+ p - print again the current hunk
++ p - print the current hunk again
? - print help
+
After deciding the fate for all hunks, if there is any hunk
@@ add-patch.c: N_("j - leave this hunk undecided, see next undecided hunk\n"
"/ - search for a hunk matching the given regex\n"
"s - split the current hunk into smaller hunks\n"
"e - manually edit the current hunk\n"
-+ "p - print again the current hunk\n"
++ "p - print the current hunk again\n"
"? - print help\n");
static int patch_update_file(struct add_p_state *s,
2: 4d5626e1c4 ! 2: d7ad5e5424 add-patch: do not print hunks repeatedly
@@ Commit message
Signed-off-by: Rubén Justo <rjusto@gmail.com>
## add-patch.c ##
-@@ add-patch.c: N_("j - leave this hunk undecided, see next undecided hunk\n"
- static int patch_update_file(struct add_p_state *s,
+@@ add-patch.c: static int patch_update_file(struct add_p_state *s,
struct file_diff *file_diff)
{
-- size_t hunk_index = 0;
-+ size_t hunk_index = 0, prev_hunk_index = -1;
- ssize_t i, undecided_previous, undecided_next;
+ size_t hunk_index = 0;
+- ssize_t i, undecided_previous, undecided_next;
++ ssize_t i, undecided_previous, undecided_next, rendered_hunk_index = -1;
struct hunk *hunk;
char ch;
+ struct child_process cp = CHILD_PROCESS_INIT;
@@ add-patch.c: static int patch_update_file(struct add_p_state *s,
strbuf_reset(&s->buf);
if (file_diff->hunk_nr) {
- render_hunk(s, hunk, 0, colored, &s->buf);
- fputs(s->buf.buf, stdout);
-+ if (prev_hunk_index != hunk_index) {
++ if (rendered_hunk_index != hunk_index) {
+ render_hunk(s, hunk, 0, colored, &s->buf);
+ fputs(s->buf.buf, stdout);
-+ strbuf_reset(&s->buf);
+
-+ prev_hunk_index = hunk_index;
++ rendered_hunk_index = hunk_index;
+ }
-- strbuf_reset(&s->buf);
+ strbuf_reset(&s->buf);
++
if (undecided_previous >= 0) {
permitted |= ALLOW_GOTO_PREVIOUS_UNDECIDED_HUNK;
strbuf_addstr(&s->buf, ",k");
@@ add-patch.c: static int patch_update_file(struct add_p_state *s,
color_fprintf_ln(stdout, s->s.header_color,
_("Split into %d hunks."),
(int)splittable_into);
-+ prev_hunk_index = -1;
++ rendered_hunk_index = -1;
+ }
} else if (s->answer.buf[0] == 'e') {
if (!(permitted & ALLOW_EDIT))
@@ add-patch.c: static int patch_update_file(struct add_p_state *s,
}
} else if (s->answer.buf[0] == 'p') {
- /* nothing special is needed */
-+ prev_hunk_index = -1;
++ rendered_hunk_index = -1;
} else {
const char *p = _(help_patch_remainder), *eol = p;
-- 2.44.0.370.gd7ad5e5424