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:
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()