Merge pull request #26151 from bfredl/signcount

fix(decorations): fix imbalanced sign count
This commit is contained in:
bfredl 2023-11-22 12:19:30 +01:00 committed by GitHub
commit 34fa1e1ca4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 4 deletions

View File

@ -179,11 +179,17 @@ DecorSignHighlight decor_sh_from_inline(DecorHighlightInline item, String concea
void buf_put_decor(buf_T *buf, DecorInline decor, int row) void buf_put_decor(buf_T *buf, DecorInline decor, int row)
{ {
if (decor.ext) { if (decor.ext) {
if (decor.data.ext.vt) { DecorVirtText *vt = decor.data.ext.vt;
buf_put_decor_virt(buf, decor.data.ext.vt); while (vt) {
buf_put_decor_virt(buf, vt);
vt = vt->next;
} }
if (decor.data.ext.sh_idx != DECOR_ID_INVALID) {
buf_put_decor_sh(buf, &kv_A(decor_items, decor.data.ext.sh_idx), row); uint32_t idx = decor.data.ext.sh_idx;
while (idx != DECOR_ID_INVALID) {
DecorSignHighlight *sh = &kv_A(decor_items, idx);
buf_put_decor_sh(buf, sh, row);
idx = sh->next;
} }
} }
} }

View File

@ -4628,6 +4628,27 @@ l5
end) end)
it('can add a single sign and text highlight', function()
insert(example_test3)
feed 'gg'
meths.buf_set_extmark(0, ns, 1, 0, {sign_text='S', hl_group='Todo', end_col=1})
screen:expect{grid=[[
{1: }^l1 |
S {3:l}2 |
{1: }l3 |
{1: }l4 |
{1: }l5 |
{1: } |
{2:~ }|
{2:~ }|
{2:~ }|
|
]]}
meths.buf_clear_namespace(0, ns, 0, -1)
end)
it('can add multiple signs (single extmark)', function() it('can add multiple signs (single extmark)', function()
insert(example_test3) insert(example_test3)
feed 'gg' feed 'gg'