fix(messages): clear new lines when increasing 'cmdheight' (#27421)

This commit is contained in:
zeertzjq 2024-02-11 18:12:56 +08:00 committed by GitHub
parent 170c890dca
commit ca258db156
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 2 deletions

View File

@ -210,7 +210,11 @@ void msg_grid_validate(void)
msg_grid_adj.target = &default_grid; msg_grid_adj.target = &default_grid;
redraw_cmdline = true; redraw_cmdline = true;
} else if (msg_grid.chars && !msg_scrolled && msg_grid_pos != max_rows) { } else if (msg_grid.chars && !msg_scrolled && msg_grid_pos != max_rows) {
int diff = msg_grid_pos - max_rows;
msg_grid_set_pos(max_rows, false); msg_grid_set_pos(max_rows, false);
if (diff > 0) {
grid_clear(&msg_grid_adj, Rows - diff, Rows, 0, Columns, HL_ATTR(HLF_MSG));
}
} }
msg_grid_adj.cols = Columns; msg_grid_adj.cols = Columns;

View File

@ -458,7 +458,6 @@ describe('messages', function()
-- do the same with 'cmdheight' set to 2 -- do the same with 'cmdheight' set to 2
feed('q') feed('q')
command('set ch=2') command('set ch=2')
command('mode') -- FIXME: bottom is invalid after scrolling
screen:expect([[ screen:expect([[
^ | ^ |
{0:~ }|*7 {0:~ }|*7
@ -688,7 +687,6 @@ describe('messages', function()
tabnew tabnew
set cmdheight=2 set cmdheight=2
]]) ]])
command('mode') -- FIXME: bottom is invalid after scrolling
screen:expect([[ screen:expect([[
{2: [No Name] }{1: [No Name] }{3: }{2:X}| {2: [No Name] }{1: [No Name] }{3: }{2:X}|
^ | ^ |

View File

@ -1555,6 +1555,23 @@ vimComment xxx match /\s"[^\-:.%#=*].*$/ms=s+1,lc=1 excludenl contains=@vim
]]) ]])
eq({ mode = 'n', blocking = false }, api.nvim_get_mode()) eq({ mode = 'n', blocking = false }, api.nvim_get_mode())
end) end)
it('bottom of screen is cleared after increasing &cmdheight #20360', function()
command('set laststatus=2')
screen:expect([[
^ |
{1:~ }|*4
{3:[No Name] }|
|
]])
command('set cmdheight=4')
screen:expect([[
^ |
{1:~ }|
{3:[No Name] }|
|*4
]])
end)
end) end)
it('calling screenstring() after redrawing between messages without UI #20999', function() it('calling screenstring() after redrawing between messages without UI #20999', function()