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)
#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
/^C23$/
:exe ":norm! l\<C-V>j$hhAab\<Esc>"
:.,/^$/w >> test.out
-:" Test for Visual block insert when virtualedit=all
-:set ve=all
+:" Test for Visual block insert when virtualedit=all and utf-8 encoding
+:set ve=all enc=utf-8
:/\t\tline
:exe ":norm! 07l\<C-V>jjIx\<Esc>"
-:set ve=
+:.,/^$/w >> test.out
+:" Test for Visual block append when virtualedit=all
+:exe ":norm! 012l\<C-v>jjAx\<Esc>"
+:set ve= enc=latin1
:.,/^$/w >> test.out
:" gUe must uppercase a whole word, also when ß changes to SS
Gothe youtußeuu end\eYpk0wgUe
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 559,
/**/
558,
/**/