diff options
-rw-r--r-- | src/nvim/charset.c | 4 | ||||
-rw-r--r-- | test/functional/ui/multibyte_spec.lua | 16 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/nvim/charset.c b/src/nvim/charset.c index 49890a460a..c2745a66a0 100644 --- a/src/nvim/charset.c +++ b/src/nvim/charset.c @@ -645,8 +645,8 @@ size_t transchar_hex(char *const buf, const int c) size_t i = 0; buf[i++] = '<'; - if (c > 255) { - if (c > 255 * 256) { + if (c > 0xFF) { + if (c > 0xFFFF) { buf[i++] = (char)nr2hex((unsigned)c >> 20); buf[i++] = (char)nr2hex((unsigned)c >> 16); } diff --git a/test/functional/ui/multibyte_spec.lua b/test/functional/ui/multibyte_spec.lua index 9f413f8bff..5cecd423d7 100644 --- a/test/functional/ui/multibyte_spec.lua +++ b/test/functional/ui/multibyte_spec.lua @@ -17,10 +17,11 @@ describe("multibyte rendering", function() screen = Screen.new(60, 6) screen:attach({rgb=true}) screen:set_default_attr_ids({ - [1] = {bold = true, foreground = Screen.colors.Blue1}, + [1] = {bold = true, foreground = Screen.colors.Blue}, [2] = {background = Screen.colors.WebGray}, [3] = {background = Screen.colors.LightMagenta}, [4] = {bold = true}, + [5] = {foreground = Screen.colors.Blue}, }) end) @@ -119,6 +120,19 @@ describe("multibyte rendering", function() ]]) end) + it('0xffff is shown as 4 hex digits', function() + command([[call setline(1, "\uFFFF!!!")]]) + feed('$') + screen:expect{grid=[[ + {5:<ffff>}!!^! | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]} + end) + it('works with a lot of unicode (zalgo) text', function() screen:try_resize(65, 10) meths.buf_set_lines(0,0,-1,true, split(dedent [[ |