neovim

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

commit 9c6a3703bb15d56fecdd962512f69f0ccf6d398c
parent 01a97d2ad75a459cad850d542f9ad7c4467cb380
Author: Tomasz N <przepompownia@users.noreply.github.com>
Date:   Mon, 16 Dec 2024 12:07:27 +0100

fix(messages): no message kind for :undo messages #31590

Problem: cannot handle `:undo` and `:redo` messages in a special way,
e.g. replace one by another.

Solution: add `undo` kind.
Diffstat:
Mruntime/doc/ui.txt | 1+
Msrc/nvim/undo.c | 1+
Mtest/functional/ui/messages_spec.lua | 30++++++++++++++++++++++++++++++
3 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/runtime/doc/ui.txt b/runtime/doc/ui.txt @@ -805,6 +805,7 @@ must handle. "quickfix" Quickfix navigation message "search_cmd" Entered search command "search_count" Search count message ("S" flag of 'shortmess') + "undo" |:undo| and |:redo| message "wildlist" 'wildmode' "list" message "wmsg" Warning ("search hit BOTTOM", |W10|, …) New kinds may be added in the future; clients should treat unknown diff --git a/src/nvim/undo.c b/src/nvim/undo.c @@ -1862,6 +1862,7 @@ static void u_doit(int startcount, bool quiet, bool do_buf_event) u_oldcount = -1; } + msg_ext_set_kind("undo"); int count = startcount; while (count--) { // Do the change warning now, so that it triggers FileChangedRO when diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua @@ -240,6 +240,36 @@ describe('ui/ext_messages', function() }, }, }) + + -- undo + feed('uu') + screen:expect({ + grid = [[ + ^ | + {1:~ }|*4 + ]], + messages = { + { + content = { { 'Already at oldest change' } }, + kind = 'undo', + }, + }, + }) + + feed('<C-r><C-r><C-r>') + screen:expect({ + grid = [[ + line 1 | + line^ | + {1:~ }|*3 + ]], + messages = { + { + content = { { 'Already at newest change' } }, + kind = 'undo', + }, + }, + }) end) it(':echoerr', function()