diff --git a/src/normal.c b/src/normal.c index b994056e65..b9170ace55 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 287d9dc9c1..aa86fc1df9 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 a1b037813f..c023922177 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 77a2564481..fc286b828f 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, /**/