From 14d047ad2f448885de39966d1963f15d3fa21089 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 26 Jul 2023 11:58:26 +0800 Subject: test(inccommand): add a test for #20248 (#24489) --- test/functional/ui/inccommand_user_spec.lua | 56 ++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/functional/ui/inccommand_user_spec.lua b/test/functional/ui/inccommand_user_spec.lua index 8a1030fa25..62c4cac709 100644 --- a/test/functional/ui/inccommand_user_spec.lua +++ b/test/functional/ui/inccommand_user_spec.lua @@ -436,7 +436,7 @@ describe("'inccommand' for user commands", function() assert_alive() end) - it("no crash if preview callback executes undo", function() + it('no crash if preview callback executes undo #20036', function() command('set inccommand=nosplit') exec_lua([[ vim.api.nvim_create_user_command('Foo', function() end, { @@ -457,6 +457,60 @@ describe("'inccommand' for user commands", function() feed(':Fo') assert_alive() end) + + it('breaking undo chain in Insert mode works properly #20248', function() + command('set inccommand=nosplit') + command('inoremap . .u') + exec_lua([[ + vim.api.nvim_create_user_command('Test', function() end, { + nargs = 1, + preview = function(opts, _, _) + vim.cmd('norm i' .. opts.args) + return 1 + end + }) + ]]) + feed(':Test a.a.a.a.') + screen:expect([[ + text on line 1 | + more text on line 2 | + oh no, even more text | + will the text ever stop | + oh well | + did the text stop | + why won't it stop | + make the text stop | + a.a.a.a. | + {2:~ }| + {2:~ }| + {2:~ }| + {2:~ }| + {2:~ }| + {2:~ }| + {2:~ }| + :Test a.a.a.a.^ | + ]]) + feed('') + screen:expect([[ + text on line 1 | + more text on line 2 | + oh no, even more text | + will the text ever stop | + oh well | + did the text stop | + why won't it stop | + make the text stop | + ^ | + {2:~ }| + {2:~ }| + {2:~ }| + {2:~ }| + {2:~ }| + {2:~ }| + {2:~ }| + | + ]]) + end) end) describe("'inccommand' with multiple buffers", function() -- cgit