From: Bram Moolenaar Date: Thu, 19 Nov 2015 19:11:54 +0000 (+0100) Subject: patch 7.4.929 X-Git-Tag: v7.4.929 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d29c6fea94947b3f4b54fbd5a6f832a7d744bf27;p=vim 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 index b994056e6..b9170ace5 100644 --- 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 index 287d9dc9c..aa86fc1df 100644 --- a/src/testdir/test94.in +++ b/src/testdir/test94.in @@ -210,6 +210,21 @@ $vp :-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 index a1b037813..c02392217 100644 --- 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 index 77a256448..fc286b828 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 929, /**/ 928, /**/