Problem: When a multi-byte character ends in a zero byte, putting blockwise
text puts it before the character instead of after it.
Solution: Use int instead of char for the character under the cursor.
(Luchr, closes #1403) Add a test.
test_perl \
test_popup \
test_profile \
+ test_put \
test_quickfix \
test_regexp_latin \
test_regexp_utf8 \
*/
if (y_type == MBLOCK)
{
- char c = gchar_cursor();
+ int c = gchar_cursor();
colnr_T endcol2 = 0;
if (dir == FORWARD && c != NUL)
source test_messages.vim
source test_partial.vim
source test_popup.vim
+source test_put.vim
source test_reltime.vim
source test_searchpos.vim
source test_set.vim
--- /dev/null
+
+func Test_put_block()
+ if !has('multi_byte')
+ return
+ endif
+ new
+ call feedkeys("i\<C-V>u2500\<CR>x\<ESC>", 'x')
+ call feedkeys("\<C-V>y", 'x')
+ call feedkeys("gg0p", 'x')
+ call assert_equal("\u2500x", getline(1))
+ bwipe!
+endfunc
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 222,
/**/
221,
/**/