diff options
author | oni-link <knil.ino@gmail.com> | 2014-04-13 01:10:11 +0200 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-04-14 18:21:50 -0300 |
commit | 965f5870616ae6a31779ddce4f74ae4f1b564979 (patch) | |
tree | 392001b3356d0c54f68b59f6aeda9eab8b21173b /src/ops.c | |
parent | 421c388bb77f19a5be3c987393ada1a8e5c8ea66 (diff) | |
download | rneovim-965f5870616ae6a31779ddce4f74ae4f1b564979.tar.gz rneovim-965f5870616ae6a31779ddce4f74ae4f1b564979.tar.bz2 rneovim-965f5870616ae6a31779ddce4f74ae4f1b564979.zip |
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
Diffstat (limited to 'src/ops.c')
-rw-r--r-- | src/ops.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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; |