neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit a6dd67f5b66c0ef646808422ceeac710ce144547
parent f733595e795cd2b819cb8fd18327cd51f47b2124
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri, 26 May 2023 10:41:19 +0800

fix(extmarks): fix virt_text_hide with 'nowrap' and multibyte (#23757)


Diffstat:
Msrc/nvim/drawline.c | 2+-
Mtest/functional/ui/decorations_spec.lua | 20++++++++++++++++++++
2 files changed, 21 insertions(+), 1 deletion(-)

diff --git 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 @@ -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()