1
0
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:
Bram Moolenaar
2014-08-16 18:36:43 +02:00
parent 1fc7e972b0
commit b5cf6c34e8
8 changed files with 55 additions and 26 deletions

View File

@@ -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;