aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz N <przepompownia@users.noreply.github.com>2024-12-16 12:07:27 +0100
committerGitHub <noreply@github.com>2024-12-16 03:07:27 -0800
commit9c6a3703bb15d56fecdd962512f69f0ccf6d398c (patch)
treea1918bd7099c3b3708a06b850aaef021b58b404b
parent01a97d2ad75a459cad850d542f9ad7c4467cb380 (diff)
downloadrneovim-9c6a3703bb15d56fecdd962512f69f0ccf6d398c.tar.gz
rneovim-9c6a3703bb15d56fecdd962512f69f0ccf6d398c.tar.bz2
rneovim-9c6a3703bb15d56fecdd962512f69f0ccf6d398c.zip
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.
-rw-r--r--runtime/doc/ui.txt1
-rw-r--r--src/nvim/undo.c1
-rw-r--r--test/functional/ui/messages_spec.lua30
3 files changed, 32 insertions, 0 deletions
diff --git a/runtime/doc/ui.txt b/runtime/doc/ui.txt
index 7696dbdb9d..6fb000b285 100644
--- 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
index 233e323f37..d523e55640 100644
--- 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
index e5316f264b..2c1297b768 100644
--- 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()