aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-11-10 06:16:54 +0800
committerGitHub <noreply@github.com>2022-11-10 06:16:54 +0800
commitf2857dcd5abaf3a5aee9271b79ffa4eee345d21c (patch)
treeba48c59cd9173a15e01ed68abcf73c6112401e29
parentfae754073289566051433fae74ec65783f9e7a6a (diff)
downloadrneovim-f2857dcd5abaf3a5aee9271b79ffa4eee345d21c.tar.gz
rneovim-f2857dcd5abaf3a5aee9271b79ffa4eee345d21c.tar.bz2
rneovim-f2857dcd5abaf3a5aee9271b79ffa4eee345d21c.zip
fix(messages): reset msg_grid_scroll_discount when redrawing (#21000)
-rw-r--r--src/nvim/drawscreen.c1
-rw-r--r--src/nvim/message.c2
-rw-r--r--src/nvim/message.h2
-rw-r--r--test/functional/ui/messages_spec.lua13
4 files changed, 17 insertions, 1 deletions
diff --git a/src/nvim/drawscreen.c b/src/nvim/drawscreen.c
index 30abcd1a31..b674f8c235 100644
--- a/src/nvim/drawscreen.c
+++ b/src/nvim/drawscreen.c
@@ -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;
}
diff --git a/src/nvim/message.c b/src/nvim/message.c
index f274bd7289..314232d4be 100644
--- a/src/nvim/message.c
+++ b/src/nvim/message.c
@@ -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".
diff --git a/src/nvim/message.h b/src/nvim/message.h
index 31cd54f18c..191d3b8da7 100644
--- a/src/nvim/message.h
+++ b/src/nvim/message.h
@@ -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
diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua
index a042291b54..8ca29e79d9 100644
--- a/test/functional/ui/messages_spec.lua
+++ b/test/functional/ui/messages_spec.lua
@@ -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