vim-patch:9.1.0855: setting 'cmdheight' may missing output (#31216)

Problem:  setting 'cmdheight' may cause hit-enter-prompt and echo output
          to be missing
Solution: Before cleaning the cmdline, check the need_wait_return flag
          (nwounkn)

closes: vim/vim#13432

2e48567007

Co-authored-by: nwounkn <nwounkn@gmail.com>
This commit is contained in:
zeertzjq 2024-11-15 08:18:53 +08:00 committed by GitHub
parent fa0dcde3d9
commit 54c85bcb6d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 37 additions and 5 deletions

View File

@ -6814,11 +6814,13 @@ void command_height(void)
// Recompute window positions. // Recompute window positions.
win_comp_pos(); win_comp_pos();
// clear the lines added to cmdline if (!need_wait_return) {
if (full_screen) { // clear the lines added to cmdline
grid_clear(&default_grid, cmdline_row, Rows, 0, Columns, 0); if (full_screen) {
grid_clear(&default_grid, cmdline_row, Rows, 0, Columns, 0);
}
msg_row = cmdline_row;
} }
msg_row = cmdline_row;
redraw_cmdline = true; redraw_cmdline = true;
return; return;
} }

View File

@ -139,10 +139,17 @@ describe('cmdline', function()
]]) ]])
end) end)
it("setting 'cmdheight' works after outputting two messages vim-patch:9.0.0665", function() -- oldtest: Test_changing_cmdheight()
it("changing 'cmdheight'", function()
local screen = Screen.new(60, 8) local screen = Screen.new(60, 8)
exec([[ exec([[
set cmdheight=1 laststatus=2 set cmdheight=1 laststatus=2
func EchoOne()
set laststatus=2 cmdheight=1
echo 'foo'
echo 'bar'
set cmdheight=2
endfunc
func EchoTwo() func EchoTwo()
set laststatus=2 set laststatus=2
set cmdheight=5 set cmdheight=5
@ -151,6 +158,8 @@ describe('cmdline', function()
set cmdheight=1 set cmdheight=1
endfunc endfunc
]]) ]])
-- setting 'cmdheight' works after outputting two messages
feed(':call EchoTwo()') feed(':call EchoTwo()')
screen:expect([[ screen:expect([[
| |
@ -165,6 +174,17 @@ describe('cmdline', function()
{3:[No Name] }| {3:[No Name] }|
| |
]]) ]])
-- increasing 'cmdheight' doesn't clear the messages that need hit-enter
feed(':call EchoOne()<CR>')
screen:expect([[
|
{1:~ }|*3
{3: }|
foo |
bar |
{6:Press ENTER or type command to continue}^ |
]])
end) end)
-- oldtest: Test_cmdheight_tabline() -- oldtest: Test_cmdheight_tabline()

View File

@ -271,6 +271,12 @@ func Test_changing_cmdheight()
let lines =<< trim END let lines =<< trim END
set cmdheight=1 laststatus=2 set cmdheight=1 laststatus=2
func EchoOne()
set laststatus=2 cmdheight=1
echo 'foo'
echo 'bar'
set cmdheight=2
endfunc
func EchoTwo() func EchoTwo()
set laststatus=2 set laststatus=2
set cmdheight=5 set cmdheight=5
@ -306,6 +312,10 @@ func Test_changing_cmdheight()
call term_sendkeys(buf, ":call EchoTwo()\<CR>") call term_sendkeys(buf, ":call EchoTwo()\<CR>")
call VerifyScreenDump(buf, 'Test_changing_cmdheight_6', {}) call VerifyScreenDump(buf, 'Test_changing_cmdheight_6', {})
" increasing 'cmdheight' doesn't clear the messages that need hit-enter
call term_sendkeys(buf, ":call EchoOne()\<CR>")
call VerifyScreenDump(buf, 'Test_changing_cmdheight_7', {})
" clean up " clean up
call StopVimInTerminal(buf) call StopVimInTerminal(buf)
endfunc endfunc