From ca760e645ba4d1fdb0b6fff3ac98231c3d683306 Mon Sep 17 00:00:00 2001 From: Tomasz N Date: Tue, 10 Dec 2024 11:39:41 +0100 Subject: [PATCH] fix(messages): no message kind for :write messages #31519 - Problem: cannot replace the initial bufwrite message (from `filemess`) by the final one (`"test.lua" [New] 0L, 0B written`), when using `vim.ui_attach`. - Solution: add kind to both messages. --- runtime/doc/ui.txt | 1 + src/nvim/bufwrite.c | 2 ++ test/functional/ui/messages_spec.lua | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/runtime/doc/ui.txt b/runtime/doc/ui.txt index 77eddfd8e1..7696dbdb9d 100644 --- a/runtime/doc/ui.txt +++ b/runtime/doc/ui.txt @@ -789,6 +789,7 @@ must handle. kind Name indicating the message kind: "" (empty) Unknown (consider a |feature-request|) + "bufwrite" |:write| message "confirm" |confirm()| or |:confirm| dialog "confirm_sub" |:substitute| confirm dialog |:s_c| "emsg" Error (|errors|, internal error, |:throw|, …) diff --git a/src/nvim/bufwrite.c b/src/nvim/bufwrite.c index 95639bed70..2cf02403da 100644 --- a/src/nvim/bufwrite.c +++ b/src/nvim/bufwrite.c @@ -1148,6 +1148,7 @@ int buf_write(buf_T *buf, char *fname, char *sfname, linenr_T start, linenr_T en msg_scroll = true; // don't overwrite previous file message } if (!filtering) { + msg_ext_set_kind("bufwrite"); // show that we are busy #ifndef UNIX filemess(buf, sfname, ""); @@ -1763,6 +1764,7 @@ restore_backup: if (msg_add_fileformat(fileformat)) { insert_space = true; } + msg_ext_set_kind("bufwrite"); msg_add_lines(insert_space, lnum, nchars); // add line/char count if (!shortmess(SHM_WRITE)) { if (append) { diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua index 164b840b35..e5316f264b 100644 --- a/test/functional/ui/messages_spec.lua +++ b/test/functional/ui/messages_spec.lua @@ -1112,7 +1112,7 @@ stack traceback: command('write ' .. fname) screen:expect({ messages = { - { content = { { string.format('"%s" [New] 0L, 0B written', fname) } }, kind = '' }, + { content = { { string.format('"%s" [New] 0L, 0B written', fname) } }, kind = 'bufwrite' }, }, }) end)