From: Bram Moolenaar Date: Wed, 19 Mar 2014 17:57:54 +0000 (+0100) Subject: updated for version 7.4.210 X-Git-Tag: v7.4.210 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4c9a949d00468dde748653b269338ddfb30910cc;p=vim 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) --- diff --git a/src/ops.c b/src/ops.c index 4517e4225..cd1f29e0b 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 8f45f47dc..c1e1cc49a 100644 --- a/src/testdir/test39.in +++ b/src/testdir/test39.in @@ -35,6 +35,12 @@ G$khhhhhkkcmno /^C23$/ :exe ":norm! l\j$hhAab\" :.,/^$/w >> test.out +:" Test for Visual block insert when virtualedit=all +:set ve=all +:/\t\tline +:exe ":norm! 07l\jjIx\" +: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 b459355c6..ef7a2c644 100644 Binary files a/src/testdir/test39.ok and b/src/testdir/test39.ok differ diff --git a/src/version.c b/src/version.c index 65fe16254..3b1ccd9fd 100644 --- a/src/version.c +++ b/src/version.c @@ -738,6 +738,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 210, /**/ 209, /**/