diff options
| author | Florian Walch <florian@fwalch.com> | 2015-01-03 16:01:17 +0100 | 
|---|---|---|
| committer | Florian Walch <florian@fwalch.com> | 2015-01-03 16:08:51 +0100 | 
| commit | ceb54c55ad779b08caf7fbb55fb3460d90352a52 (patch) | |
| tree | 99e5a34c92bd17252908026523ef038078e02fdc /src/nvim/ops.c | |
| parent | d61111530541f74df89c010e5edfb633a412dc72 (diff) | |
| download | rneovim-ceb54c55ad779b08caf7fbb55fb3460d90352a52.tar.gz rneovim-ceb54c55ad779b08caf7fbb55fb3460d90352a52.tar.bz2 rneovim-ceb54c55ad779b08caf7fbb55fb3460d90352a52.zip | |
vim-patch: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)
https://code.google.com/p/vim/source/detail?r=v7-4-559
Diffstat (limited to 'src/nvim/ops.c')
| -rw-r--r-- | src/nvim/ops.c | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/src/nvim/ops.c b/src/nvim/ops.c index 9b33b6732c..3cefc9f623 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -515,17 +515,17 @@ static void block_insert(oparg_T *oap, char_u *s, int b_insert, struct block_def      }      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;      }      newp = (char_u *) xmalloc((size_t)(STRLEN(oldp) + s_len + count + 1)); | 
