aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/drawline.c8
-rw-r--r--test/functional/ui/decorations_spec.lua27
2 files changed, 31 insertions, 4 deletions
diff --git a/src/nvim/drawline.c b/src/nvim/drawline.c
index c789c42af4..c9ebcd8ed4 100644
--- 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
index de3f7e7a5b..68c0e5eaca 100644
--- 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()