[Backport release-0.7] fix(signs): priority of extmark signs (#19718) (#19721)

fix(signs): priority of extmark signs (#19718)

Co-authored-by: Lewis Russell <lewis6991@gmail.com>
This commit is contained in:
Christian Clason 2022-08-11 19:22:04 +02:00 committed by GitHub
parent 4cd0ee49af
commit 44205fe516
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 6 deletions

View File

@ -2582,8 +2582,8 @@ nvim_buf_set_extmark({buffer}, {ns_id}, {line}, {col}, {*opts})
inserted (true for right, false for left).
Defaults to false.
• priority: a priority value for the highlight
group. For example treesitter highlighting
uses a value of 100.
group or sign attribute. For example
treesitter highlighting uses a value of 100.
• strict: boolean that indicates extmark should
not be placed if the line or column value is
past the end of the buffer or end of the line

View File

@ -441,8 +441,9 @@ Array nvim_buf_get_extmarks(Buffer buffer, Integer ns_id, Object start, Object e
/// the extmark end position (if it exists) will be shifted
/// in when new text is inserted (true for right, false
/// for left). Defaults to false.
/// - priority: a priority value for the highlight group. For
/// example treesitter highlighting uses a value of 100.
/// - priority: a priority value for the highlight group or sign
/// attribute. For example treesitter highlighting uses a
/// value of 100.
/// - strict: boolean that indicates extmark should not be placed
/// if the line or column value is past the end of the
/// buffer or end of the line respectively. Defaults to true.

View File

@ -394,7 +394,7 @@ void decor_redraw_signs(buf_T *buf, int row, int *num_signs, sign_attrs_T sattrs
int j;
for (j = (*num_signs); j > 0; j--) {
if (sattrs[j].sat_prio <= decor->priority) {
if (sattrs[j - 1].sat_prio >= decor->priority) {
break;
}
sattrs[j] = sattrs[j-1];

View File

@ -1636,7 +1636,7 @@ l5
screen:expect{grid=[[
S4S1^l1 |
S2x l2 |
x S2l2 |
S5{1: }l3 |
{1: }l4 |
{1: }l5 |
@ -1734,6 +1734,34 @@ l5
]]}
end)
it('works with priority #19716', function()
screen:try_resize(20, 3)
insert(example_text)
feed 'gg'
helpers.command('sign define Oldsign text=O3')
helpers.command([[exe 'sign place 42 line=1 name=Oldsign priority=10 buffer=' . bufnr('')]])
meths.buf_set_extmark(0, ns, 0, -1, {sign_text='S4', priority=100})
meths.buf_set_extmark(0, ns, 0, -1, {sign_text='S2', priority=5})
meths.buf_set_extmark(0, ns, 0, -1, {sign_text='S5', priority=200})
meths.buf_set_extmark(0, ns, 0, -1, {sign_text='S1', priority=1})
screen:expect{grid=[[
S1S2O3S4S5^l1 |
{1: }l2 |
|
]]}
-- Check truncation works too
meths.win_set_option(0, 'signcolumn', 'auto')
screen:expect{grid=[[
S5^l1 |
{1: }l2 |
|
]]}
end)
end)
describe('decorations: virt_text', function()