From 9c202b9392f3d42618cc576aab00a50ed2f7bdeb Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Mon, 15 Jan 2024 23:45:11 +0800 Subject: fix(grid): handle clearing half a double-width char (#27023) --- test/functional/ui/multibyte_spec.lua | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'test/functional') diff --git a/test/functional/ui/multibyte_spec.lua b/test/functional/ui/multibyte_spec.lua index d38bc27a51..c2fc763401 100644 --- a/test/functional/ui/multibyte_spec.lua +++ b/test/functional/ui/multibyte_spec.lua @@ -22,6 +22,8 @@ describe('multibyte rendering', function() [3] = { background = Screen.colors.LightMagenta }, [4] = { bold = true }, [5] = { foreground = Screen.colors.Blue }, + [6] = { reverse = true, bold = true }, + [7] = { reverse = true }, }) end) @@ -84,7 +86,7 @@ describe('multibyte rendering', function() {4:-- INSERT --} | ]]) - -- check double-with char is temporarily hidden when overlapped + -- check double-width char is temporarily hidden when overlapped fn.complete(4, { 'xx', 'yy' }) screen:expect([[ ab xx^ | @@ -104,6 +106,34 @@ describe('multibyte rendering', function() ]]) end) + it('no stray chars when splitting left of window with double-width chars', function() + api.nvim_buf_set_lines(0, 0, -1, true, { + ('口'):rep(16), + 'a' .. ('口'):rep(16), + 'aa' .. ('口'):rep(16), + 'aaa' .. ('口'):rep(16), + 'aaaa' .. ('口'):rep(16), + }) + screen:expect([[ + ^口口口口口口口口口口口口口口口口 | + a口口口口口口口口口口口口口口口口 | + aa口口口口口口口口口口口口口口口口 | + aaa口口口口口口口口口口口口口口口口 | + aaaa口口口口口口口口口口口口口口口口 | + | + ]]) + + command('20vnew') + screen:expect([[ + ^ │口口口口口口口口口口口口口口口口 | + {1:~ }│a口口口口口口口口口口口口口口口口 | + {1:~ }│aa口口口口口口口口口口口口口口口口 | + {1:~ }│aaa口口口口口口口口口口口口口口口口 | + {6:[No Name] }{7:[No Name] [+] }| + | + ]]) + end) + it('0xffff is shown as 4 hex digits', function() command([[call setline(1, "\uFFFF!!!")]]) feed('$') -- cgit