changeset 5730:420fd9cb86d5 v7.4.210

updated for version 7.4.210 Problem: Visual block mode plus virtual edit doesn't work well with tabs. (Liang Li) Solution: Take coladd into account. (Christian Brabandt)
author Bram Moolenaar <bram@vim.org>
date Wed, 19 Mar 2014 18:57:54 +0100
parents b5cc3a0729b1
children 70fac246bfe4
files src/ops.c src/testdir/test39.in src/testdir/test39.ok src/version.c
diffstat 4 files changed, 30 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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 */
--- 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
index b459355c6ad756d297b58653a563c6c385360202..ef7a2c6442ca8ae973f2ca86e6105214a166180d
GIT binary patch
literal 481
zc$|ez%}&BV5cbL>zQgwdBzCu@zzu8@OpHCyP2{+{-2z(LnAn8+vc8Jb4JtGk=kU#Z
zKQp6`-G{M-E4RD-%WHKY&B7ZOfJ5Dk;A?2QvNwUh+%3Ca;nTfx^0fvS$QT1KkhK<I
zprR-M2BL+K+E5rxVs5k)5@+=O+tel|I=w$)RPAdQ47eC@N%X#R*kmeK>vgIWTwTx@
zUB=W)&n?E3uhR2O`jk)*1XtAM<6?#6fs%}y%1H>(-|w1>l$7#k_tUkle;NoGMiftH
bSEt$Zb`o9SfB74q{6*VT^AJs0&hO|8MNoc-
--- 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,