Mercurial > vim
diff src/ops.c @ 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 | 4d12112c5efa |
children | 50dbef5e774a |
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 */