fix(messages): reset msg_grid_scroll_discount when redrawing

This commit is contained in:
zeertzjq
2022-11-08 16:16:59 +08:00
parent fae7540732
commit 27c529752a
4 changed files with 17 additions and 1 deletions

View File

@ -455,6 +455,7 @@ int update_screen(void)
}
msg_scrolled = 0;
msg_scrolled_at_flush = 0;
msg_grid_scroll_discount = 0;
need_wait_return = false;
}

View File

@ -130,7 +130,6 @@ static bool msg_ext_history_visible = false;
static bool msg_ext_keep_after_cmdline = false;
static int msg_grid_pos_at_flush = 0;
static int msg_grid_scroll_discount = 0;
static void ui_ext_msg_set_pos(int row, bool scrolled)
{
@ -2445,6 +2444,7 @@ void msg_reset_scroll(void)
}
msg_scrolled = 0;
msg_scrolled_at_flush = 0;
msg_grid_scroll_discount = 0;
}
/// Increment "msg_scrolled".

View File

@ -66,6 +66,8 @@ EXTERN ScreenGrid msg_grid_adj INIT(= SCREEN_GRID_INIT);
// value of msg_scrolled at latest msg_scroll_flush.
EXTERN int msg_scrolled_at_flush INIT(= 0);
EXTERN int msg_grid_scroll_discount INIT(= 0);
#ifdef INCLUDE_GENERATED_DECLARATIONS
# include "message.h.generated.h"
#endif

View File

@ -10,9 +10,11 @@ local async_meths = helpers.async_meths
local test_build_dir = helpers.test_build_dir
local nvim_prog = helpers.nvim_prog
local iswin = helpers.iswin
local exec = helpers.exec
local exc_exec = helpers.exc_exec
local exec_lua = helpers.exec_lua
local poke_eventloop = helpers.poke_eventloop
local assert_alive = helpers.assert_alive
describe('ui/ext_messages', function()
local screen
@ -1236,6 +1238,17 @@ vimComment xxx match /\s"[^\-:.%#=*].*$/ms=s+1,lc=1 excludenl contains=@vim
end)
end)
it('calling screenstring() after redrawing between messages without UI #20999', function()
clear()
exec([[
echo repeat('a', 100)
redraw
echo "\n"
call screenstring(1, 1)
]])
assert_alive()
end)
describe('ui/ext_messages', function()
local screen