neovim

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

commit 1936285d98f62a1357abf928b10c824cf9e3ff41
parent be273c3a23cf65665e843cfb13fd5319657cc5c2
Author: Ibby <33922797+SleepySwords@users.noreply.github.com>
Date:   Mon,  3 Apr 2023 01:05:08 +1000

fix(ui): fixes incorrect rendering when virtual text is not visable and nowrap

Diffstat:
Msrc/nvim/drawline.c | 8++++----
Mtest/functional/ui/decorations_spec.lua | 27+++++++++++++++++++++++++++
2 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/src/nvim/drawline.c b/src/nvim/drawline.c @@ -1743,12 +1743,12 @@ int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, bool nochange, DecorState *state = &decor_state; for (size_t i = 0; i < kv_size(state->active); i++) { DecorRange *item = &kv_A(state->active, i); - if (!(item->start_row == state->row - && kv_size(item->decor.virt_text) - && item->decor.virt_text_pos == kVTInline)) { + if (item->start_row != state->row + || !kv_size(item->decor.virt_text) + || item->decor.virt_text_pos != kVTInline) { continue; } - if (item->win_col >= -1 && item->start_col <= v) { + if (item->win_col >= -1 && item->start_col == v) { virt_inline = item->decor.virt_text; virt_inline_i = 0; item->win_col = -2; diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua @@ -1741,6 +1741,33 @@ bbbbbbb]]) {24:-- INSERT --} | ]]} end) + + it('no wrap is rendered correctly with multiple virtual text, where one is hidden', function() + insert('abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz') + command("set nowrap") + meths.buf_set_extmark(0, ns, 0, 50, + { virt_text = { { 'virtual text', 'Special' } }, virt_text_pos = 'inline', right_gravity = false }) + meths.buf_set_extmark(0, ns, 0, 2, + { virt_text = { { 'virtual text', 'Special' } }, virt_text_pos = 'inline', right_gravity = false }) + feed('$') + screen:expect { grid = [[ + opqrstuvwxyzabcdefghijklmnopqrstuvwx{28:virtual text}y^z| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]} + end) end) describe('decorations: virtual lines', function()