diff options
| -rw-r--r-- | Documentation/git-add.adoc | 2 | ||||
| -rw-r--r-- | add-patch.c | 6 | ||||
| -rwxr-xr-x | t/t3701-add-interactive.sh | 18 | 
3 files changed, 18 insertions, 8 deletions
| diff --git a/Documentation/git-add.adoc b/Documentation/git-add.adoc index 3266ccf105..5c05a3a7f9 100644 --- a/Documentation/git-add.adoc +++ b/Documentation/git-add.adoc @@ -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 diff --git a/add-patch.c b/add-patch.c index 912266a3f8..1f466ec9c0 100644 --- a/add-patch.c +++ b/add-patch.c @@ -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; diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh index d9fe289a7a..d5d2e120ab 100755 --- a/t/t3701-add-interactive.sh +++ b/t/t3701-add-interactive.sh @@ -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 | 
