summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ops.c20
-rw-r--r--src/testdir/test39.in10
-rw-r--r--src/testdir/test39.okbin432 -> 481 bytes
-rw-r--r--src/version.c2
4 files changed, 30 insertions, 2 deletions
diff --git a/src/ops.c b/src/ops.c
index 4517e4225f..cd1f29e0bf 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2646,7 +2646,15 @@ op_insert(oap, count1)
if (oap->start.lnum == curbuf->b_op_start_orig.lnum && !bd.is_MAX)
{
if (oap->op_type == OP_INSERT
- && oap->start.col != curbuf->b_op_start_orig.col)
+ && oap->start.col
+#ifdef FEAT_VIRTUALEDIT
+ + oap->start.coladd
+#endif
+ != curbuf->b_op_start_orig.col
+#ifdef FEAT_VIRTUALEDIT
+ + curbuf->b_op_start_orig.coladd
+#endif
+ )
{
oap->start.col = curbuf->b_op_start_orig.col;
pre_textlen -= getviscol2(oap->start.col, oap->start.coladd)
@@ -2654,7 +2662,15 @@ op_insert(oap, count1)
oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd);
}
else if (oap->op_type == OP_APPEND
- && oap->end.col >= curbuf->b_op_start_orig.col)
+ && oap->end.col
+#ifdef FEAT_VIRTUALEDIT
+ + oap->end.coladd
+#endif
+ >= curbuf->b_op_start_orig.col
+#ifdef FEAT_VIRTUALEDIT
+ + curbuf->b_op_start_orig.coladd
+#endif
+ )
{
oap->start.col = curbuf->b_op_start_orig.col;
/* reset pre_textlen to the value of OP_INSERT */
diff --git a/src/testdir/test39.in b/src/testdir/test39.in
index 8f45f47dc3..c1e1cc49a6 100644
--- a/src/testdir/test39.in
+++ b/src/testdir/test39.in
@@ -35,6 +35,12 @@ G$khhhhhkkcmno
/^C23$/
:exe ":norm! l\<C-V>j$hhAab\<Esc>"
:.,/^$/w >> test.out
+:" Test for Visual block insert when virtualedit=all
+:set ve=all
+:/\t\tline
+:exe ":norm! 07l\<C-V>jjIx\<Esc>"
+:set ve=
+:.,/^$/w >> test.out
:" gUe must uppercase a whole word, also when ß changes to SS
Gothe youtußeuu endYpk0wgUe
:" gUfx must uppercase until x, inclusive.
@@ -62,6 +68,10 @@ G3o987652k02l2jr
:qa!
ENDTEST
+ line1
+ line2
+ line3
+
aaaaaa
bbbbbb
cccccc
diff --git a/src/testdir/test39.ok b/src/testdir/test39.ok
index b459355c6a..ef7a2c6442 100644
--- a/src/testdir/test39.ok
+++ b/src/testdir/test39.ok
Binary files differ
diff --git a/src/version.c b/src/version.c
index 65fe16254f..3b1ccd9fd7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 210,
+/**/
209,
/**/
208,