summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-10-26 14:42:09 +0200
committerBram Moolenaar <Bram@vim.org>2019-10-26 14:42:09 +0200
commit453c19257f6d97904ec2e3823e88e63c983f2f9a (patch)
treed976cfc0526b60f792ffef69023bcad37c2c3420
parentc7488a7fc8ed0d4fd9cc440117ff848170321517 (diff)
downloadvim-git-453c19257f6d97904ec2e3823e88e63c983f2f9a.tar.gz
patch 8.1.2218: "gN" is off by one in Visual modev8.1.2218
Problem: "gN" is off by one in Visual mode. Solution: Check moving forward. (Christian Brabandt, #5075)
-rw-r--r--src/search.c4
-rw-r--r--src/testdir/test_gn.vim5
-rw-r--r--src/version.c2
3 files changed, 9 insertions, 2 deletions
diff --git a/src/search.c b/src/search.c
index a1f8998df..18f7905e5 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4677,7 +4677,7 @@ abort_search:
#endif /* FEAT_TEXTOBJ */
/*
- * Check if the pattern is one character long or zero-width.
+ * Check if the pattern is zero-width.
* If move is TRUE, check from the beginning of the buffer, else from position
* "cur".
* "direction" is FORWARD or BACKWARD.
@@ -4851,7 +4851,7 @@ current_search(
// put cursor on last character of match
curwin->w_cursor = end_pos;
- if (LT_POS(VIsual, end_pos))
+ if (LT_POS(VIsual, end_pos) && forward)
dec_cursor();
else if (VIsual_active && LT_POS(curwin->w_cursor, VIsual))
curwin->w_cursor = pos; // put the cursor on the start of the match
diff --git a/src/testdir/test_gn.vim b/src/testdir/test_gn.vim
index ecf9b8289..9edf0a21e 100644
--- a/src/testdir/test_gn.vim
+++ b/src/testdir/test_gn.vim
@@ -148,6 +148,11 @@ func Test_gn_command()
norm! gg0f7vhhhhgnd
call assert_equal(['12348'], getline(1,'$'))
sil! %d _
+ call setline('.', ['12345678'])
+ let @/ = '5'
+ norm! gg0f2vf7gNd
+ call assert_equal(['1678'], getline(1,'$'))
+ sil! %d _
set wrapscan&vim
endfu
diff --git a/src/version.c b/src/version.c
index 71d895974..af2930252 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2218,
+/**/
2217,
/**/
2216,