summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2015-11-19 20:11:54 +0100
committerBram Moolenaar <Bram@vim.org>2015-11-19 20:11:54 +0100
commitd29c6fea94947b3f4b54fbd5a6f832a7d744bf27 (patch)
treee7a1038edad7ed8ae58ce1ac444ffa7680ffc98b /src
parent5d8afebb5bf7fb1e8ce06062451dc6a1f9a53ac0 (diff)
downloadvim-git-d29c6fea94947b3f4b54fbd5a6f832a7d744bf27.tar.gz
patch 7.4.929v7.4.929
Problem: "gv" after paste selects one character less if 'selection' is "exclusive". Solution: Increment the end position. (Christian Brabandt)
Diffstat (limited to 'src')
-rw-r--r--src/normal.c3
-rw-r--r--src/testdir/test94.in15
-rw-r--r--src/testdir/test94.ok9
-rw-r--r--src/version.c2
4 files changed, 29 insertions, 0 deletions
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
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 929,
+/**/
928,
/**/
927,