From 98f5aa2564c38898d35519a1bb38dd1937c8c82e Mon Sep 17 00:00:00 2001 From: luukvbaal Date: Fri, 4 Apr 2025 14:24:17 +0200 Subject: fix(messages): verbose message emitted without kind #33305 Problem: Successive autocmd verbose messages may be emitted without a kind. Solution: Always set the kind when preparing to emit a verbose message. --- src/nvim/message.c | 2 +- test/functional/ui/messages_spec.lua | 46 +++++++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/nvim/message.c b/src/nvim/message.c index d373b92b21..46d9a40159 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -3363,8 +3363,8 @@ void verbose_enter(void) } if (msg_ext_kind != verbose_kind) { pre_verbose_kind = msg_ext_kind; - msg_ext_set_kind("verbose"); } + msg_ext_set_kind("verbose"); } /// After giving verbose message. diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua index 94faafa9be..5b40457df9 100644 --- a/test/functional/ui/messages_spec.lua +++ b/test/functional/ui/messages_spec.lua @@ -372,6 +372,50 @@ describe('ui/ext_messages', function() }) feed('') + exec([[ + set verbose=9 + augroup verbose + autocmd BufEnter * echoh "BufEnter" + autocmd BufWinEnter * bdelete + augroup END + ]]) + feed(':edit! foo') + screen:expect({ + grid = s2, + cmdline = { { abort = false } }, + messages = { + { + content = { { 'Executing BufEnter Autocommands for "*"' } }, + history = true, + kind = 'verbose', + }, + { + content = { { 'autocommand echoh "BufEnter"\n' } }, + history = true, + kind = 'verbose', + }, + { + content = { { 'Executing BufWinEnter Autocommands for "*"' } }, + history = true, + kind = 'verbose', + }, + { + content = { { 'autocommand bdelete\n' } }, + history = true, + kind = 'verbose', + }, + { + content = { { 'Press ENTER or type command to continue', 6, 18 } }, + history = false, + kind = 'return_prompt', + }, + }, + }) + feed('') + command('autocmd! verbose') + command('augroup! verbose') + command('set verbose=0') + n.add_builddir_to_rtp() feed(':help:tselect') screen:expect({ @@ -406,7 +450,7 @@ describe('ui/ext_messages', function() screen.messages = {} end, }) - feed(':bd') + feed(':bdelete$') -- kind=shell for :!cmd messages local cmd = t.is_os('win') and 'echo stdout& echo stderr>&2& exit 3' -- cgit