aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ops.c
diff options
context:
space:
mode:
authorFlorian Walch <florian@fwalch.com>2015-01-03 16:01:17 +0100
committerFlorian Walch <florian@fwalch.com>2015-01-03 16:08:51 +0100
commitceb54c55ad779b08caf7fbb55fb3460d90352a52 (patch)
tree99e5a34c92bd17252908026523ef038078e02fdc /src/nvim/ops.c
parentd61111530541f74df89c010e5edfb633a412dc72 (diff)
downloadrneovim-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.c12
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));