From b8c1b36061f443f82f34f3d4fe7807fc33edefa6 Mon Sep 17 00:00:00 2001 From: Luuk van Baal Date: Sat, 27 Apr 2024 01:00:55 +0200 Subject: [PATCH] fix(ui): set 'cmdheight' to zero for all open tabpages Problem: Enabling ext_messages claims to set 'cmdheight' to zero, but only does so for the current tabpage. Solution: Set stored 'cmdheight' value to zero for all tabpages. --- src/nvim/ui.c | 5 ++++- test/functional/lua/ui_event_spec.lua | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/nvim/ui.c b/src/nvim/ui.c index dd3bb53dde..27458d588b 100644 --- a/src/nvim/ui.c +++ b/src/nvim/ui.c @@ -218,10 +218,13 @@ 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) { diff --git a/test/functional/lua/ui_event_spec.lua b/test/functional/lua/ui_event_spec.lua index 60f8706e2d..ae39172145 100644 --- a/test/functional/lua/ui_event_spec.lua +++ b/test/functional/lua/ui_event_spec.lua @@ -163,6 +163,13 @@ describe('vim.ui_attach', function() 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()