Mercurial > vim
diff src/ops.c @ 6460:29f5cfca3388 v7.4.559
updated for version 7.4.559
Problem: Appending a block in the middle of a tab does not work correctly
when virtualedit is set.
Solution: Decrement spaces and count, don't reset them. (James McCoy)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Wed, 17 Dec 2014 18:35:42 +0100 |
parents | 39274bfbfba5 |
children | 86aacd619ac0 |
line wrap: on
line diff
--- a/src/ops.c +++ b/src/ops.c @@ -612,20 +612,20 @@ block_insert(oap, s, b_insert, bdp) #ifdef FEAT_MBYTE if (has_mbyte && spaces > 0) { + int off; + /* Avoid starting halfway a multi-byte character. */ if (b_insert) { - int off = (*mb_head_off)(oldp, oldp + offset + spaces); - spaces -= off; - count -= off; + off = (*mb_head_off)(oldp, oldp + offset + spaces); } else { - int off = (*mb_off_next)(oldp, oldp + offset); + off = (*mb_off_next)(oldp, oldp + offset); offset += off; - spaces = 0; - count = 0; } + spaces -= off; + count -= off; } #endif