summaryrefslogtreecommitdiff
path: root/src/ops.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2014-03-19 18:57:54 +0100
committerBram Moolenaar <Bram@vim.org>2014-03-19 18:57:54 +0100
commit4c9a949d00468dde748653b269338ddfb30910cc (patch)
tree8d1dae32187ebf4ff4ec9b651d06a4489e148ee4 /src/ops.c
parent529d2d63699bd43fde8c04fd0c84fd7b3e6bf20a (diff)
downloadvim-4c9a949d00468dde748653b269338ddfb30910cc.zip
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)
Diffstat (limited to 'src/ops.c')
-rw-r--r--src/ops.c20
1 files changed, 18 insertions, 2 deletions
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 */