diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-06-22 18:15:04 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-22 18:15:04 +0800 |
commit | f4f1ce1d167c557e54153f74cf0f55245b8fd414 (patch) | |
tree | 29b29b521db1805c5fea0543fe7f0969f0be7cda | |
parent | 958cc22836f199c90eea680847843574ec54ebfe (diff) | |
download | rneovim-f4f1ce1d167c557e54153f74cf0f55245b8fd414.tar.gz rneovim-f4f1ce1d167c557e54153f74cf0f55245b8fd414.tar.bz2 rneovim-f4f1ce1d167c557e54153f74cf0f55245b8fd414.zip |
fix(extmarks): hide inline virt_text properly with 'smoothscroll' (#24106)
-rw-r--r-- | src/nvim/drawline.c | 2 | ||||
-rw-r--r-- | test/functional/ui/decorations_spec.lua | 32 |
2 files changed, 33 insertions, 1 deletions
diff --git a/src/nvim/drawline.c b/src/nvim/drawline.c index 55f0d69aaf..34d15d85c3 100644 --- a/src/nvim/drawline.c +++ b/src/nvim/drawline.c @@ -1525,7 +1525,7 @@ int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, bool number_onl // If there the text doesn't reach to the desired column, need to skip // "skip_cells" cells when virtual text follows. - if (!wp->w_p_wrap && v > wlv.vcol) { + if ((!wp->w_p_wrap || (lnum == wp->w_topline && wp->w_skipcol > 0)) && v > wlv.vcol) { wlv.skip_cells = (int)(v - wlv.vcol); } diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua index 6772ef036a..419a16e7b5 100644 --- a/test/functional/ui/decorations_spec.lua +++ b/test/functional/ui/decorations_spec.lua @@ -2316,6 +2316,38 @@ bbbbbbb]]) ]]} end) + it('smoothscroll works correctly when virtual text wraps', function() + insert('foobar') + meths.buf_set_extmark(0, ns, 0, 3, + { virt_text = { { string.rep('X', 55), 'Special' } }, virt_text_pos = 'inline' }) + command('setlocal smoothscroll') + screen:expect{grid=[[ + foo{10:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}| + {10:XXXXXXXX}ba^r | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]} + feed('<C-E>') + screen:expect{grid=[[ + {1:<<<}{10:XXXXX}ba^r | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]} + end) + it('in diff mode is highlighted correct', function() insert([[ 9000 |