0
0
mirror of https://github.com/vim/vim.git synced 2025-08-29 20:33:37 -04:00

patch 8.0.0222: blockwise put on multi-byte character misplaced

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.
This commit is contained in:
Bram Moolenaar 2017-01-22 20:04:51 +01:00
parent 6a8ede99dd
commit c81299684b
5 changed files with 17 additions and 1 deletions

View File

@ -2150,6 +2150,7 @@ test_arglist \
test_perl \
test_popup \
test_profile \
test_put \
test_quickfix \
test_regexp_latin \
test_regexp_utf8 \

View File

@ -3550,7 +3550,7 @@ do_put(
*/
if (y_type == MBLOCK)
{
char c = gchar_cursor();
int c = gchar_cursor();
colnr_T endcol2 = 0;
if (dir == FORWARD && c != NUL)

View File

@ -31,6 +31,7 @@ source test_mapping.vim
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

12
src/testdir/test_put.vim Normal file
View File

@ -0,0 +1,12 @@
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

View File

@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
222,
/**/
221,
/**/