aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-05-17 21:06:27 +0800
committerGitHub <noreply@github.com>2023-05-17 21:06:27 +0800
commitc9f47fca8b896ecb304294cce675fedac9ab926c (patch)
tree65c140be15790a17830f91d964abd551b0b118e6
parent67176c3f20cf8f0b6c7d7c4d75093ea6b7c00b74 (diff)
downloadrneovim-c9f47fca8b896ecb304294cce675fedac9ab926c.tar.gz
rneovim-c9f47fca8b896ecb304294cce675fedac9ab926c.tar.bz2
rneovim-c9f47fca8b896ecb304294cce675fedac9ab926c.zip
fix(messages): ensure msg_grid is at top at more prompt (#23584)
-rw-r--r--src/nvim/message.c2
-rw-r--r--test/functional/terminal/tui_spec.lua32
2 files changed, 31 insertions, 3 deletions
diff --git a/src/nvim/message.c b/src/nvim/message.c
index 63bcf3e069..aa97ea15e5 100644
--- a/src/nvim/message.c
+++ b/src/nvim/message.c
@@ -181,7 +181,7 @@ void msg_grid_validate(void)
msg_grid.dirty_col = xcalloc((size_t)Rows, sizeof(*msg_grid.dirty_col));
// Tricky: allow resize while pager or ex mode is active
- int pos = MAX(max_rows - msg_scrolled, 0);
+ int pos = (State & MODE_ASKMORE) ? 0 : MAX(max_rows - msg_scrolled, 0);
msg_grid.throttled = false; // don't throttle in 'cmdheight' area
msg_grid_set_pos(pos, msg_scrolled);
ui_comp_put_grid(&msg_grid, pos, 0, msg_grid.rows, msg_grid.cols,
diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua
index b69867af89..352009a1b1 100644
--- a/test/functional/terminal/tui_spec.lua
+++ b/test/functional/terminal/tui_spec.lua
@@ -112,7 +112,7 @@ describe('TUI', function()
child_session:request("nvim_exec", [[
set more
func! ManyErr()
- for i in range(10)
+ for i in range(20)
echoerr "FAIL ".i
endfor
endfunc
@@ -128,7 +128,35 @@ describe('TUI', function()
{3:-- TERMINAL --} |
]]}
- feed_data('d')
+ screen:try_resize(50,10)
+ screen:expect{grid=[[
+ :call ManyErr() |
+ {8:Error detected while processing function ManyErr:} |
+ {11:line 2:} |
+ {8:FAIL 0} |
+ {8:FAIL 1} |
+ {8:FAIL 2} |
+ |
+ |
+ {10:-- More --}{1: } |
+ {3:-- TERMINAL --} |
+ ]]}
+
+ feed_data('j')
+ screen:expect{grid=[[
+ {8:Error detected while processing function ManyErr:} |
+ {11:line 2:} |
+ {8:FAIL 0} |
+ {8:FAIL 1} |
+ {8:FAIL 2} |
+ {8:FAIL 3} |
+ {8:FAIL 4} |
+ {8:FAIL 5} |
+ {10:-- More --}{1: } |
+ {3:-- TERMINAL --} |
+ ]]}
+
+ screen:try_resize(50,7)
screen:expect{grid=[[
{8:FAIL 1} |
{8:FAIL 2} |