mirror of
https://github.com/neovim/neovim.git
synced 2025-09-17 00:38:17 +00:00
screen: initialize screen properly with early set display-=msgsep
Currently `nvim -u NORC --cmd "set display-=msgsep"` will still allocate the message grid and remove it just afterwards. While inefficient, we must make sure update_screen() re-validates the default_grid completely when this happens. Fix some invalid logic: don't reallocate msg_grid on resize when the grid is not used. Elide a too early ui_flush() on startup, which caused an invalid cursor position to be used.
This commit is contained in:
@@ -154,8 +154,8 @@ void msg_grid_validate(void)
|
|||||||
{
|
{
|
||||||
grid_assign_handle(&msg_grid);
|
grid_assign_handle(&msg_grid);
|
||||||
bool should_alloc = msg_dothrottle();
|
bool should_alloc = msg_dothrottle();
|
||||||
if (msg_grid.Rows != Rows || msg_grid.Columns != Columns
|
if (should_alloc && (msg_grid.Rows != Rows || msg_grid.Columns != Columns
|
||||||
|| (should_alloc && !msg_grid.chars)) {
|
|| !msg_grid.chars)) {
|
||||||
// TODO(bfredl): eventually should be set to "invalid". I e all callers
|
// TODO(bfredl): eventually should be set to "invalid". I e all callers
|
||||||
// will use the grid including clear to EOS if necessary.
|
// will use the grid including clear to EOS if necessary.
|
||||||
grid_alloc(&msg_grid, Rows, Columns, false, true);
|
grid_alloc(&msg_grid, Rows, Columns, false, true);
|
||||||
|
@@ -404,7 +404,7 @@ int update_screen(int type)
|
|||||||
default_grid.valid = true;
|
default_grid.valid = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == NOT_VALID && msg_dothrottle()) {
|
if (type == NOT_VALID && (msg_dothrottle() || msg_grid.chars)) {
|
||||||
grid_fill(&default_grid, Rows-p_ch, Rows, 0, Columns, ' ', ' ', 0);
|
grid_fill(&default_grid, Rows-p_ch, Rows, 0, Columns, ' ', ' ', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7288,9 +7288,9 @@ void screen_resize(int width, int height)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ui_flush();
|
||||||
}
|
}
|
||||||
ui_flush();
|
busy--;
|
||||||
--busy;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check if the new Nvim application "shell" dimensions are valid.
|
/// Check if the new Nvim application "shell" dimensions are valid.
|
||||||
|
@@ -81,6 +81,20 @@ local function test_embed(ext_linegrid)
|
|||||||
eq(Screen.colors.Green, screen.default_colors.rgb_bg)
|
eq(Screen.colors.Green, screen.default_colors.rgb_bg)
|
||||||
end}
|
end}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it("set display-=msgsep before first redraw", function()
|
||||||
|
startup('--cmd', 'set display-=msgsep')
|
||||||
|
screen:expect{grid=[[
|
||||||
|
^ |
|
||||||
|
{3:~ }|
|
||||||
|
{3:~ }|
|
||||||
|
{3:~ }|
|
||||||
|
{3:~ }|
|
||||||
|
{3:~ }|
|
||||||
|
{3:~ }|
|
||||||
|
|
|
||||||
|
]]}
|
||||||
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe('--embed UI on startup (ext_linegrid=true)', function() test_embed(true) end)
|
describe('--embed UI on startup (ext_linegrid=true)', function() test_embed(true) end)
|
||||||
|
Reference in New Issue
Block a user