mirror of
https://github.com/neovim/neovim.git
synced 2024-09-17 20:58:20 -04:00
fix(extmarks): wrong display when changing text with virt_lines (#24879)
This commit is contained in:
parent
1bdcb9aaf1
commit
362df0f793
@ -319,7 +319,12 @@ static void changed_common(buf_T *buf, linenr_T lnum, colnr_T col, linenr_T lnum
|
||||
if (wp->w_lines[i].wl_lnum >= lnum) {
|
||||
// Do not change wl_lnum at index zero, it is used to
|
||||
// compare with w_topline. Invalidate it instead.
|
||||
if (wp->w_lines[i].wl_lnum < lnume || i == 0) {
|
||||
// If the buffer has virt_lines, invalidate the line
|
||||
// after the changed lines as the virt_lines for a
|
||||
// changed line may become invalid.
|
||||
if (i == 0 || wp->w_lines[i].wl_lnum < lnume
|
||||
|| (wp->w_lines[i].wl_lnum == lnume
|
||||
&& wp->w_buffer->b_virt_line_blocks > 0)) {
|
||||
// line included in change
|
||||
wp->w_lines[i].wl_valid = false;
|
||||
} else if (xtra != 0) {
|
||||
|
@ -3784,6 +3784,63 @@ if (h->n_buckets < new_n_buckets) { // expand
|
||||
]]}
|
||||
end)
|
||||
|
||||
it('works when using dd or yyp #23915 #23916', function()
|
||||
insert([[
|
||||
line1
|
||||
line2
|
||||
line3
|
||||
line4
|
||||
line5]])
|
||||
meths.buf_set_extmark(0, ns, 0, 0, {virt_lines={{{"foo"}}, {{"bar"}}, {{"baz"}}}})
|
||||
screen:expect{grid=[[
|
||||
line1 |
|
||||
foo |
|
||||
bar |
|
||||
baz |
|
||||
line2 |
|
||||
line3 |
|
||||
line4 |
|
||||
line^5 |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
|
|
||||
]]}
|
||||
|
||||
feed('gg')
|
||||
feed('dd')
|
||||
screen:expect{grid=[[
|
||||
^line2 |
|
||||
foo |
|
||||
bar |
|
||||
baz |
|
||||
line3 |
|
||||
line4 |
|
||||
line5 |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
|
|
||||
]]}
|
||||
|
||||
feed('yyp')
|
||||
screen:expect{grid=[[
|
||||
line2 |
|
||||
foo |
|
||||
bar |
|
||||
baz |
|
||||
^line2 |
|
||||
line3 |
|
||||
line4 |
|
||||
line5 |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
|
|
||||
]]}
|
||||
end)
|
||||
|
||||
end)
|
||||
|
||||
describe('decorations: signs', function()
|
||||
|
Loading…
Reference in New Issue
Block a user