mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
add-patch: document that option J rolls over
The variable "permitted" is not reset after moving to a different hunk, so it only accumulates permission and doesn't necessarily reflect those of the current hunk. This may be a bug, but is actually useful with the option J, which can be used at the last hunk to roll over to the first hunk. Make this particular behavior official. Also adjust the error message, as it will only be shown if there's just a single hunk. Suggested-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
2c3cc43f96
commit
c309b65a7c
@@ -343,7 +343,7 @@ patch::
|
||||
g - select a hunk to go to
|
||||
/ - search for a hunk matching the given regex
|
||||
j - go to the next undecided hunk
|
||||
J - go to the next hunk
|
||||
J - go to the next hunk, roll over at the bottom
|
||||
k - go to the previous undecided hunk
|
||||
K - go to the previous hunk
|
||||
s - split the current hunk into smaller hunks
|
||||
|
||||
@@ -1398,7 +1398,7 @@ static size_t display_hunks(struct add_p_state *s,
|
||||
|
||||
static const char help_patch_remainder[] =
|
||||
N_("j - go to the next undecided hunk\n"
|
||||
"J - go to the next hunk\n"
|
||||
"J - go to the next hunk, roll over at the bottom\n"
|
||||
"k - go to the previous undecided hunk\n"
|
||||
"K - go to the previous hunk\n"
|
||||
"g - select a hunk to go to\n"
|
||||
@@ -1493,7 +1493,7 @@ static int patch_update_file(struct add_p_state *s,
|
||||
permitted |= ALLOW_GOTO_NEXT_UNDECIDED_HUNK;
|
||||
strbuf_addstr(&s->buf, ",j");
|
||||
}
|
||||
if (hunk_index + 1 < file_diff->hunk_nr) {
|
||||
if (file_diff->hunk_nr > 1) {
|
||||
permitted |= ALLOW_GOTO_NEXT_HUNK;
|
||||
strbuf_addstr(&s->buf, ",J");
|
||||
}
|
||||
@@ -1584,7 +1584,7 @@ soft_increment:
|
||||
if (permitted & ALLOW_GOTO_NEXT_HUNK)
|
||||
hunk_index++;
|
||||
else
|
||||
err(s, _("No next hunk"));
|
||||
err(s, _("No other hunk"));
|
||||
} else if (s->answer.buf[0] == 'k') {
|
||||
if (permitted & ALLOW_GOTO_PREVIOUS_UNDECIDED_HUNK)
|
||||
hunk_index = undecided_previous;
|
||||
|
||||
@@ -334,7 +334,7 @@ test_expect_success 'different prompts for mode change/deleted' '
|
||||
cat >expect <<-\EOF &&
|
||||
(1/1) Stage deletion [y,n,q,a,d,p,?]?
|
||||
(1/2) Stage mode change [y,n,q,a,d,j,J,g,/,p,?]?
|
||||
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,p,?]?
|
||||
(2/2) Stage this hunk [y,n,q,a,d,K,J,g,/,e,p,?]?
|
||||
EOF
|
||||
test_cmp expect actual.filtered
|
||||
'
|
||||
@@ -521,7 +521,7 @@ test_expect_success 'split hunk setup' '
|
||||
test_expect_success 'goto hunk 1 with "g 1"' '
|
||||
test_when_finished "git reset" &&
|
||||
tr _ " " >expect <<-EOF &&
|
||||
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,p,?]? + 1: -1,2 +1,3 +15
|
||||
(2/2) Stage this hunk [y,n,q,a,d,K,J,g,/,e,p,?]? + 1: -1,2 +1,3 +15
|
||||
_ 2: -2,4 +3,8 +21
|
||||
go to which hunk? @@ -1,2 +1,3 @@
|
||||
_10
|
||||
@@ -550,7 +550,7 @@ test_expect_success 'goto hunk 1 with "g1"' '
|
||||
test_expect_success 'navigate to hunk via regex /pattern' '
|
||||
test_when_finished "git reset" &&
|
||||
tr _ " " >expect <<-EOF &&
|
||||
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,p,?]? @@ -1,2 +1,3 @@
|
||||
(2/2) Stage this hunk [y,n,q,a,d,K,J,g,/,e,p,?]? @@ -1,2 +1,3 @@
|
||||
_10
|
||||
+15
|
||||
_20
|
||||
@@ -805,7 +805,7 @@ test_expect_success 'colors can be overridden' '
|
||||
<YELLOW>(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,p,?]? <RESET><MAGENTA>@@ -3 +3,2 @@<RESET>
|
||||
<CYAN> more-context<RESET>
|
||||
<BLUE>+<RESET><BLUE>another-one<RESET>
|
||||
<YELLOW>(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,p,?]? <RESET><MAGENTA>@@ -1,3 +1,3 @@<RESET>
|
||||
<YELLOW>(2/2) Stage this hunk [y,n,q,a,d,K,J,g,/,e,p,?]? <RESET><MAGENTA>@@ -1,3 +1,3 @@<RESET>
|
||||
<CYAN> context<RESET>
|
||||
<BOLD>-old<RESET>
|
||||
<BLUE>+new<RESET>
|
||||
@@ -1354,4 +1354,14 @@ do
|
||||
'
|
||||
done
|
||||
|
||||
test_expect_success 'option J rolls over' '
|
||||
test_write_lines a b c d e f g h i >file &&
|
||||
git add file &&
|
||||
test_write_lines X b c d e f g h X >file &&
|
||||
test_write_lines J J q | git add -p >out &&
|
||||
test_write_lines 1 2 1 >expect &&
|
||||
sed -n -e "s-/.*--" -e "s/^(//p" <out >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
Reference in New Issue
Block a user