aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2022-09-16 10:31:37 +0200
committerbfredl <bjorn.linse@gmail.com>2022-09-16 10:33:12 +0200
commitb616458af90cc12ef7379d06c3ef1fde4958e62b (patch)
treebc295058422a7314130442655bbae970cd7122bf
parent0b7a3c173c929085f54a178c9fa852481d5f021e (diff)
downloadrneovim-b616458af90cc12ef7379d06c3ef1fde4958e62b.tar.gz
rneovim-b616458af90cc12ef7379d06c3ef1fde4958e62b.tar.bz2
rneovim-b616458af90cc12ef7379d06c3ef1fde4958e62b.zip
fix(messages): do not crash on cmdheight=0 and g< redisplay
fixes #20153
-rw-r--r--src/nvim/message.c5
-rw-r--r--test/functional/ui/messages_spec.lua51
2 files changed, 56 insertions, 0 deletions
diff --git a/src/nvim/message.c b/src/nvim/message.c
index 8bcf5a552f..2751822322 100644
--- a/src/nvim/message.c
+++ b/src/nvim/message.c
@@ -2955,6 +2955,11 @@ static int do_more_prompt(int typed_char)
}
} else {
// First display any text that we scrolled back.
+ // if p_ch=0 we need to allocate a line for "press enter" messages!
+ if (cmdline_row >= Rows && !ui_has(kUIMessages)) {
+ msg_scroll_up(true, false);
+ msg_scrolled++;
+ }
while (toscroll > 0 && mp_last != NULL) {
if (msg_do_throttle() && !msg_grid.throttled) {
// Tricky: we redraw at one line higher than usual. Therefore
diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua
index 522c9ccba2..6b8fa99b38 100644
--- a/test/functional/ui/messages_spec.lua
+++ b/test/functional/ui/messages_spec.lua
@@ -2020,4 +2020,55 @@ aliquip ex ea commodo consequat.]])
|
]]}
end)
+
+ it('with cmdheight=0 does not crash with g<', function()
+ command('set cmdheight=0')
+ feed(':ls<cr>')
+ screen:expect{grid=[[
+ |
+ {1:~ }|
+ {12: }|
+ :ls |
+ 1 %a "[No Name]" |
+ line 1 |
+ {4:Press ENTER or type command to cont}|
+ {4:inue}^ |
+ ]]}
+
+ feed('<cr>')
+ screen:expect{grid=[[
+ ^ |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ ]]}
+
+ feed('g<lt>')
+ screen:expect{grid=[[
+ |
+ {1:~ }|
+ {12: }|
+ :ls |
+ 1 %a "[No Name]" |
+ line 1 |
+ {4:Press ENTER or type command to cont}|
+ {4:inue}^ |
+ ]]}
+
+ feed('<cr>')
+ screen:expect{grid=[[
+ ^ |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ ]]}
+ end)
end)