forked from aniani/vim
updated for version 7.4.408
Problem: Visual block insert breaks a multi-byte character. Solution: Calculate the position properly. (Yasuhiro Matsumoto)
This commit is contained in:
20
src/ops.c
20
src/ops.c
@@ -609,6 +609,26 @@ block_insert(oap, s, b_insert, bdp)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
if (has_mbyte && spaces > 0)
|
||||
{
|
||||
/* Avoid starting halfway a multi-byte character. */
|
||||
if (b_insert)
|
||||
{
|
||||
int off = (*mb_head_off)(oldp, oldp + offset + spaces);
|
||||
spaces -= off;
|
||||
count -= off;
|
||||
}
|
||||
else
|
||||
{
|
||||
int off = (*mb_off_next)(oldp, oldp + offset);
|
||||
offset += off;
|
||||
spaces = 0;
|
||||
count = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
newp = alloc_check((unsigned)(STRLEN(oldp)) + s_len + count + 1);
|
||||
if (newp == NULL)
|
||||
continue;
|
||||
|
Reference in New Issue
Block a user