neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 60fb8a6a8bd94132a5dbf3a4520ba0db7ae5a9e3
parent e3c083832c77eb7c24442bd10bbb718599a764d9
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue, 16 Apr 2024 10:38:17 +0800

fix(messages): avoid crash with :intro and ch=0 (#28343)

This just copies code from msg_start() to wait_return().  Not sure if
there is a better place to put such a block.
Diffstat:
Msrc/nvim/message.c | 8++++++++
Mtest/functional/ui/messages_spec.lua | 29+++++++++++++++++++++++++++++
2 files changed, 37 insertions(+), 0 deletions(-)

diff --git 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 @@ -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<CR>') + screen:expect([[ + |*5 + {MATCH:.*}| + | + Nvim is open source and freely distributable | + https://neovim.io/#chat | + | + type :help nvim{18:<Enter>} if you are new! | + type :checkhealth{18:<Enter>} to optimize Nvim | + type :q{18:<Enter>} to exit | + type :help{18:<Enter>} for help | + | + {MATCH: +}type :help news{18:<Enter>} to see changes in v{MATCH:%d+%.%d+ +}| + | + Help poor children in Uganda! | + type :help iccf{18:<Enter>} for information | + |*2 + {3: }| + | + {6:Press ENTER or type command to continue}^ | + ]]) + feed('<CR>') + assert_alive() + end) end) it('calling screenstring() after redrawing between messages without UI #20999', function()