diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-11-10 06:16:54 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-10 06:16:54 +0800 |
commit | f2857dcd5abaf3a5aee9271b79ffa4eee345d21c (patch) | |
tree | ba48c59cd9173a15e01ed68abcf73c6112401e29 | |
parent | fae754073289566051433fae74ec65783f9e7a6a (diff) | |
download | rneovim-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.c | 1 | ||||
-rw-r--r-- | src/nvim/message.c | 2 | ||||
-rw-r--r-- | src/nvim/message.h | 2 | ||||
-rw-r--r-- | test/functional/ui/messages_spec.lua | 13 |
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 |