diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-05-26 10:41:19 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-26 10:41:19 +0800 |
commit | a6dd67f5b66c0ef646808422ceeac710ce144547 (patch) | |
tree | ef7e03c2578c8515e2b53fb99acc6b6db8ce719d | |
parent | f733595e795cd2b819cb8fd18327cd51f47b2124 (diff) | |
download | rneovim-a6dd67f5b66c0ef646808422ceeac710ce144547.tar.gz rneovim-a6dd67f5b66c0ef646808422ceeac710ce144547.tar.bz2 rneovim-a6dd67f5b66c0ef646808422ceeac710ce144547.zip |
fix(extmarks): fix virt_text_hide with 'nowrap' and multibyte (#23757)
-rw-r--r-- | src/nvim/drawline.c | 2 | ||||
-rw-r--r-- | test/functional/ui/decorations_spec.lua | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/nvim/drawline.c b/src/nvim/drawline.c index 016a25b9d5..d2d39e8ca8 100644 --- a/src/nvim/drawline.c +++ b/src/nvim/drawline.c @@ -1729,7 +1729,7 @@ int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, int mod_top, bo wlv.draw_state = WL_LINE; if (has_decor && wlv.row == startrow + wlv.filler_lines) { // hide virt_text on text hidden by 'nowrap' - decor_redraw_col(wp, wlv.vcol, wlv.off, true, &decor_state); + decor_redraw_col(wp, (colnr_T)(ptr - line), wlv.off, true, &decor_state); } win_line_continue(&wlv); // use wlv.saved_ values } diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua index b301ed8353..767ec54a7b 100644 --- a/test/functional/ui/decorations_spec.lua +++ b/test/functional/ui/decorations_spec.lua @@ -825,6 +825,26 @@ describe('extmark decorations', function() end -- ?古古古古?古古 | | ]]} + + screen:try_resize(50, 2) + command('set nowrap') + meths.buf_set_lines(0, 12, 12, true, {'-- ' .. ('…'):rep(57)}) + feed('G') + meths.buf_set_extmark(0, ns, 12, 123, { virt_text={{'!!!!!', 'ErrorMsg'}}, virt_text_pos='overlay', virt_text_hide=true}) + screen:expect{grid=[[ + ^-- …………………………………………………………………………………………………………{4:!!!!!}……| + | + ]]} + feed('40zl') + screen:expect{grid=[[ + ^………{4:!!!!!}……………………………… | + | + ]]} + feed('10zl') + screen:expect{grid=[[ + ^………………………… | + | + ]]} end) it('can have virtual text of overlay position and styling', function() |