diff --git a/src/nvim/message.c b/src/nvim/message.c index 362dc2c05a..49db12df42 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -1191,6 +1191,14 @@ void wait_return(int redraw) check_timestamps(false); } + // if cmdheight=0, we need to scroll in the first line of msg_grid upon the screen + if (p_ch == 0 && !ui_has(kUIMessages) && !msg_scrolled) { + msg_grid_validate(); + msg_scroll_up(false, true); + msg_scrolled++; + cmdline_row = Rows - 1; + } + hit_return_msg(true); do { diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua index 867d487183..e4daf3b546 100644 --- a/test/functional/ui/messages_spec.lua +++ b/test/functional/ui/messages_spec.lua @@ -1536,6 +1536,35 @@ vimComment xxx match /\s"[^\-:.%#=*].*$/ms=s+1,lc=1 excludenl contains=@vim |*4 ]]) end) + + it('supports :intro with cmdheight=0 #26505', function() + screen:try_resize(80, 24) + command('set cmdheight=0') + feed(':intro') + screen:expect([[ + |*5 + {MATCH:.*}| + | + Nvim is open source and freely distributable | + https://neovim.io/#chat | + | + type :help nvim{18:} if you are new! | + type :checkhealth{18:} to optimize Nvim | + type :q{18:} to exit | + type :help{18:} for help | + | + {MATCH: +}type :help news{18:} to see changes in v{MATCH:%d+%.%d+ +}| + | + Help poor children in Uganda! | + type :help iccf{18:} for information | + |*2 + {3: }| + | + {6:Press ENTER or type command to continue}^ | + ]]) + feed('') + assert_alive() + end) end) it('calling screenstring() after redrawing between messages without UI #20999', function()