aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/ui.c26
-rw-r--r--test/functional/lua/ui_event_spec.lua15
2 files changed, 29 insertions, 12 deletions
diff --git a/src/nvim/ui.c b/src/nvim/ui.c
index 75af543448..27458d588b 100644
--- a/src/nvim/ui.c
+++ b/src/nvim/ui.c
@@ -194,15 +194,6 @@ void ui_refresh(void)
abort();
}
- if (!ui_active()) {
- return;
- }
-
- if (updating_screen) {
- ui_schedule_refresh();
- return;
- }
-
int width = INT_MAX;
int height = INT_MAX;
bool ext_widgets[kUIExtCount];
@@ -227,18 +218,29 @@ void ui_refresh(void)
if (i < kUIGlobalCount) {
ext_widgets[i] |= ui_cb_ext[i];
}
- // Set 'cmdheight' to zero when ext_messages becomes active.
+ // Set 'cmdheight' to zero when ext_messages becomes active for all tabpages.
if (i == kUIMessages && !ui_ext[i] && ext_widgets[i]) {
set_option_value(kOptCmdheight, NUMBER_OPTVAL(0), 0);
command_height();
+ FOR_ALL_TABS(tp) {
+ tp->tp_ch_used = 0;
+ }
}
ui_ext[i] = ext_widgets[i];
if (i < kUIGlobalCount) {
- ui_call_option_set(cstr_as_string(ui_ext_names[i]),
- BOOLEAN_OBJ(ext_widgets[i]));
+ ui_call_option_set(cstr_as_string(ui_ext_names[i]), BOOLEAN_OBJ(ext_widgets[i]));
}
}
+ if (!ui_active()) {
+ return;
+ }
+
+ if (updating_screen) {
+ ui_schedule_refresh();
+ return;
+ }
+
ui_default_colors_set();
int save_p_lz = p_lz;
diff --git a/test/functional/lua/ui_event_spec.lua b/test/functional/lua/ui_event_spec.lua
index 5fe51a2c35..ae39172145 100644
--- a/test/functional/lua/ui_event_spec.lua
+++ b/test/functional/lua/ui_event_spec.lua
@@ -155,6 +155,21 @@ describe('vim.ui_attach', function()
},
}, actual, vim.inspect(actual))
end)
+
+ it('ui_refresh() works without remote UI', function()
+ screen:detach()
+ exec_lua('vim.ui_attach(ns, { ext_messages = true }, on_event)')
+ n.api.nvim_set_option_value('cmdheight', 1, {})
+ screen:attach()
+ eq(1, n.api.nvim_get_option_value('cmdheight', {}))
+ end)
+
+ it("ui_refresh() sets 'cmdheight' for all open tabpages with ext_messages", function()
+ exec_lua('vim.cmd.tabnew()')
+ exec_lua('vim.ui_attach(ns, { ext_messages = true }, on_event)')
+ exec_lua('vim.cmd.tabnext()')
+ eq(0, n.api.nvim_get_option_value('cmdheight', {}))
+ end)
end)
describe('vim.ui_attach', function()