mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 18:55:14 -07:00
Merge pull request #27872 from luukvbaal/cmdheight
fix(ui): don't force 'cmdheight' to zero with ext_messages
This commit is contained in:
commit
f42ab1dc48
@ -777,9 +777,10 @@ This UI extension delegates presentation of messages and dialogs. Messages
|
||||
that would otherwise render in the message/cmdline screen space, are emitted
|
||||
as UI events.
|
||||
|
||||
Nvim will not allocate screen space for the cmdline or messages, and
|
||||
'cmdheight' will be forced zero. Cmdline state is emitted as |ui-cmdline|
|
||||
events, which the UI must handle.
|
||||
Nvim will not allocate screen space for the cmdline or messages. 'cmdheight'
|
||||
will be set to zero, but can be changed and used for the replacing cmdline or
|
||||
message window. Cmdline state is emitted as |ui-cmdline| events, which the UI
|
||||
must handle.
|
||||
|
||||
["msg_show", kind, content, replace_last] ~
|
||||
Display a message to the user.
|
||||
|
@ -227,6 +227,11 @@ void ui_refresh(void)
|
||||
if (i < kUIGlobalCount) {
|
||||
ext_widgets[i] |= ui_cb_ext[i];
|
||||
}
|
||||
// Set 'cmdheight' to zero when ext_messages becomes active.
|
||||
if (i == kUIMessages && !ui_ext[i] && ext_widgets[i]) {
|
||||
set_option_value(kOptCmdheight, NUMBER_OPTVAL(0), 0);
|
||||
command_height();
|
||||
}
|
||||
ui_ext[i] = ext_widgets[i];
|
||||
if (i < kUIGlobalCount) {
|
||||
ui_call_option_set(cstr_as_string(ui_ext_names[i]),
|
||||
@ -241,10 +246,6 @@ void ui_refresh(void)
|
||||
screen_resize(width, height);
|
||||
p_lz = save_p_lz;
|
||||
|
||||
if (ext_widgets[kUIMessages]) {
|
||||
set_option_value(kOptCmdheight, NUMBER_OPTVAL(0), 0);
|
||||
command_height();
|
||||
}
|
||||
ui_mode_info_set();
|
||||
pending_mode_update = true;
|
||||
ui_cursor_shape();
|
||||
|
@ -5899,10 +5899,6 @@ static void frame_setheight(frame_T *curfrp, int height)
|
||||
|
||||
if (curfrp->fr_parent == NULL) {
|
||||
// topframe: can only change the command line height
|
||||
// Avoid doing so with external messages.
|
||||
if (ui_has(kUIMessages)) {
|
||||
return;
|
||||
}
|
||||
if (height > ROWS_AVAIL) {
|
||||
// If height is greater than the available space, try to create space for
|
||||
// the frame by reducing 'cmdheight' if possible, while making sure
|
||||
@ -6241,12 +6237,6 @@ const char *did_set_winminwidth(optset_T *args FUNC_ATTR_UNUSED)
|
||||
void win_drag_status_line(win_T *dragwin, int offset)
|
||||
{
|
||||
frame_T *fr = dragwin->w_frame;
|
||||
|
||||
// Avoid changing command line height with external messages.
|
||||
if (fr->fr_next == NULL && ui_has(kUIMessages)) {
|
||||
return;
|
||||
}
|
||||
|
||||
frame_T *curfr = fr;
|
||||
if (fr != topframe) { // more than one window
|
||||
fr = fr->fr_parent;
|
||||
|
@ -1706,19 +1706,24 @@ describe('cmdheight=0', function()
|
||||
]])
|
||||
end)
|
||||
|
||||
it('cannot be resized at all with external messages', function()
|
||||
it('can be resized with external messages', function()
|
||||
clear()
|
||||
screen = new_screen({ rgb = true, ext_messages = true })
|
||||
command('set laststatus=2 mouse=a')
|
||||
command('resize -1')
|
||||
screen:expect([[
|
||||
^ |
|
||||
{1:~ }|*2
|
||||
{3:[No Name] }|
|
||||
|
|
||||
]])
|
||||
api.nvim_input_mouse('left', 'press', '', 0, 3, 10)
|
||||
poke_eventloop()
|
||||
api.nvim_input_mouse('left', 'drag', '', 0, 4, 10)
|
||||
screen:expect([[
|
||||
^ |
|
||||
{1:~ }|*3
|
||||
{3:[No Name] }|
|
||||
]])
|
||||
api.nvim_input_mouse('left', 'press', '', 0, 6, 10)
|
||||
poke_eventloop()
|
||||
api.nvim_input_mouse('left', 'drag', '', 0, 5, 10)
|
||||
screen:expect_unchanged()
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user