neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 37c77ab46baaeadb7c3cc5f3b77bd8ca1d7cd0da
parent cb02c20569b56545a1657d4f7f8f29171f1037d7
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Fri, 10 Jan 2025 23:43:45 +0100

fix(messages): attaching/detaching ext_messages causes asserts #31952

Problem:  Assert hit related to message kind, which is reset after a
          ext_messages UI is forcibly detached, so the assertion is
          expectedly false. Assert hit related to message grid variables
          after an ext_messages UI attaches while message grid is scrolled.
Solution: Don't check message kind assertion if no ext_messages UI is
          attached. Flush message grid when first/last ext_messages UI
          attaches/detaches.
Diffstat:
Msrc/nvim/message.c | 2+-
Msrc/nvim/ui.c | 2+-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/nvim/message.c b/src/nvim/message.c @@ -312,7 +312,7 @@ void msg_multihl(HlMessage hl_msg, const char *kind, bool history, bool err) } else { msg_multiline(chunk.text, chunk.hl_id, true, false, &need_clear); } - assert(msg_ext_kind == kind); + assert(!ui_has(kUIMessages) || msg_ext_kind == kind); } if (history && kv_size(hl_msg)) { add_msg_hist_multihl(NULL, 0, 0, true, hl_msg); diff --git a/src/nvim/ui.c b/src/nvim/ui.c @@ -223,10 +223,10 @@ void ui_refresh(void) // Reset 'cmdheight' for all tabpages when ext_messages toggles. if (had_message != ui_ext[kUIMessages]) { set_option_value(kOptCmdheight, NUMBER_OPTVAL(had_message), 0); - command_height(); FOR_ALL_TABS(tp) { tp->tp_ch_used = had_message; } + msg_scroll_flush(); } if (!ui_active()) {