aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-05-28 17:22:25 +0800
committerGitHub <noreply@github.com>2023-05-28 17:22:25 +0800
commit4dd43e31db8fa23b5189e074cff94f1491035aac (patch)
treeafaeb5251aff89eb67693d8258fc2467d6e07cca
parentf29acc507305a7f4323a3233dc3867dfbe00132b (diff)
downloadrneovim-4dd43e31db8fa23b5189e074cff94f1491035aac.tar.gz
rneovim-4dd43e31db8fa23b5189e074cff94f1491035aac.tar.bz2
rneovim-4dd43e31db8fa23b5189e074cff94f1491035aac.zip
fix(extmarks): don't show virt lines for end mark (#23792)
-rw-r--r--src/nvim/decoration.c2
-rw-r--r--test/functional/ui/decorations_spec.lua24
2 files changed, 25 insertions, 1 deletions
diff --git a/src/nvim/decoration.c b/src/nvim/decoration.c
index 81e1cb617c..677bc25127 100644
--- a/src/nvim/decoration.c
+++ b/src/nvim/decoration.c
@@ -603,7 +603,7 @@ int decor_virt_lines(win_T *wp, linenr_T lnum, VirtLines *lines, TriState has_fo
mtkey_t mark = marktree_itr_current(itr);
if (mark.pos.row < 0 || mark.pos.row >= end_row) {
break;
- } else if (marktree_decor_level(mark) < kDecorLevelVirtLine) {
+ } else if (mt_end(mark) || marktree_decor_level(mark) < kDecorLevelVirtLine) {
goto next_mark;
}
bool above = mark.pos.row > (lnum - 2);
diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua
index fa4286c3ad..4960a1d3ed 100644
--- a/test/functional/ui/decorations_spec.lua
+++ b/test/functional/ui/decorations_spec.lua
@@ -2978,6 +2978,30 @@ if (h->n_buckets < new_n_buckets) { // expand
]]}
end)
+ it('does not show twice if end_row or end_col is specified #18622', function()
+ insert([[
+ aaa
+ bbb
+ ccc
+ ddd]])
+ meths.buf_set_extmark(0, ns, 0, 0, {end_row = 2, virt_lines = {{{'VIRT LINE 1', 'NonText'}}}})
+ meths.buf_set_extmark(0, ns, 3, 0, {end_col = 2, virt_lines = {{{'VIRT LINE 2', 'NonText'}}}})
+ screen:expect{grid=[[
+ aaa |
+ {1:VIRT LINE 1} |
+ bbb |
+ ccc |
+ dd^d |
+ {1:VIRT LINE 2} |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ |
+ ]]}
+ end)
+
end)
describe('decorations: signs', function()