diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-10-26 14:42:09 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-10-26 14:42:09 +0200 |
commit | 453c19257f6d97904ec2e3823e88e63c983f2f9a (patch) | |
tree | d976cfc0526b60f792ffef69023bcad37c2c3420 | |
parent | c7488a7fc8ed0d4fd9cc440117ff848170321517 (diff) | |
download | vim-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.c | 4 | ||||
-rw-r--r-- | src/testdir/test_gn.vim | 5 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |