From 965f5870616ae6a31779ddce4f74ae4f1b564979 Mon Sep 17 00:00:00 2001 From: oni-link Date: Sun, 13 Apr 2014 01:10:11 +0200 Subject: [PATCH] vim-patch: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) https://code.google.com/p/vim/source/detail?r=420fd9cb86d51a92c4307a746557e81914c6d6c4 --- src/ops.c | 7 +++++-- src/testdir/test39.in | 10 ++++++++++ src/testdir/test39.ok | Bin 432 -> 481 bytes src/version.c | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/ops.c b/src/ops.c index 44c8c6f134..7688f1bb32 100644 --- a/src/ops.c +++ b/src/ops.c @@ -2132,13 +2132,16 @@ void op_insert(oparg_T *oap, long count1) * to adjust the block for that. */ 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 + oap->start.coladd + != curbuf->b_op_start_orig.col + curbuf->b_op_start_orig.coladd) { oap->start.col = curbuf->b_op_start_orig.col; pre_textlen -= getviscol2(oap->start.col, oap->start.coladd) - oap->start_vcol; 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 + oap->end.coladd + >= curbuf->b_op_start_orig.col + + curbuf->b_op_start_orig.coladd) { oap->start.col = curbuf->b_op_start_orig.col; /* reset pre_textlen to the value of OP_INSERT */ pre_textlen += bd.textlen; 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\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 b459355c6ad756d297b58653a563c6c385360202..ef7a2c6442ca8ae973f2ca86e6105214a166180d 100644 GIT binary patch delta 57 jcmdnM{E&IV9(@G}s8Ha{$;?YN