# HG changeset patch # User Christian Brabandt # Date 1447960504 -3600 # Node ID 0c1278704b5c4508d2eeacfae27982a0208bbca5 # Parent db447f019c7c3ef26a36d7acb8449d04babd2b85 commit https://github.com/vim/vim/commit/d29c6fea94947b3f4b54fbd5a6f832a7d744bf27 Author: Bram Moolenaar Date: Thu Nov 19 20:11:54 2015 +0100 patch 7.4.929 Problem: "gv" after paste selects one character less if 'selection' is "exclusive". Solution: Increment the end position. (Christian Brabandt) diff --git a/src/normal.c b/src/normal.c --- a/src/normal.c +++ b/src/normal.c @@ -9496,6 +9496,9 @@ nv_put(cap) { curbuf->b_visual.vi_start = curbuf->b_op_start; curbuf->b_visual.vi_end = curbuf->b_op_end; + /* need to adjust cursor position */ + if (*p_sel == 'e') + inc(&curbuf->b_visual.vi_end); } /* When all lines were selected and deleted do_put() leaves an empty diff --git a/src/testdir/test94.in b/src/testdir/test94.in --- a/src/testdir/test94.in +++ b/src/testdir/test94.in @@ -210,6 +210,21 @@ k$v$p :-2yank $v$p :$put ='---' +: +:$put ='' +:$put ='gv in exclusive select mode after operation' +:$put ='zzz ' +:$put ='äà ' +:set selection=exclusive +kv3lyjv3lpgvcxxx +:$put ='---' +: +:$put ='' +:$put ='gv in exclusive select mode without operation' +:$put ='zzz ' +:set selection=exclusive +0v3lgvcxxx +:$put ='---' :/^start:/+2,$w! test.out :q! ENDTEST diff --git a/src/testdir/test94.ok b/src/testdir/test94.ok --- a/src/testdir/test94.ok +++ b/src/testdir/test94.ok @@ -112,3 +112,12 @@ cc aaa --- + +gv in exclusive select mode after operation +zzz +xxx +--- + +gv in exclusive select mode without operation +xxx +--- diff --git a/src/version.c b/src/version.c --- 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 */ /**/ + 929, +/**/ 928, /**/ 927,