mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
fix(api): update topline when flushing with nvim__redraw() (#34346)
Problem: nvim__redraw may update the screen with an invalid topline.
Solution: Update the topline before calling `update_screen()` (as
:redraw does).
(cherry picked from commit af82f36108
)
This commit is contained in:
committed by
github-actions[bot]
parent
c0201909c7
commit
8d3b7b57c8
@ -2357,6 +2357,8 @@ void nvim__redraw(Dict(redraw) *opts, Error *err)
|
||||
// Redraw pending screen updates when explicitly requested or when determined
|
||||
// that it is necessary to properly draw other requested components.
|
||||
if (opts->flush && !cmdpreview) {
|
||||
validate_cursor(curwin);
|
||||
update_topline(curwin);
|
||||
update_screen();
|
||||
}
|
||||
|
||||
|
@ -5511,4 +5511,32 @@ describe('API', function()
|
||||
|
||||
n.assert_alive()
|
||||
end)
|
||||
|
||||
it('nvim__redraw updates topline', function()
|
||||
local screen = Screen.new(40, 8)
|
||||
fn.setline(1, fn.range(100))
|
||||
feed(':call getchar()<CR>')
|
||||
fn.cursor(50, 1)
|
||||
screen:expect([[
|
||||
0 |
|
||||
1 |
|
||||
2 |
|
||||
3 |
|
||||
4 |
|
||||
5 |
|
||||
6 |
|
||||
^:call getchar() |
|
||||
]])
|
||||
api.nvim__redraw({ flush = true })
|
||||
screen:expect([[
|
||||
46 |
|
||||
47 |
|
||||
48 |
|
||||
49 |
|
||||
50 |
|
||||
51 |
|
||||
52 |
|
||||
^:call getchar() |
|
||||
]])
|
||||
end)
|
||||
end)
|
||||
|
Reference in New Issue
Block a user