aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui/inccommand_user_spec.lua
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-08-05 22:42:34 +0800
committerGitHub <noreply@github.com>2023-08-05 22:42:34 +0800
commitef44e597294e4d0d9128ef69b6aa7481a54e17cb (patch)
tree5c3e7fd203cf36f768806ecb2aa31e6f5c2edd3c /test/functional/ui/inccommand_user_spec.lua
parent42630923fc00633d806af97c1792b2ed4a71e1cc (diff)
downloadrneovim-ef44e597294e4d0d9128ef69b6aa7481a54e17cb.tar.gz
rneovim-ef44e597294e4d0d9128ef69b6aa7481a54e17cb.tar.bz2
rneovim-ef44e597294e4d0d9128ef69b6aa7481a54e17cb.zip
fix(inccommand): don't set an invalid 'undolevels' value (#24575)
Problem: Cannot break undo by setting 'undolevels' to itself in 'inccommand' preview callback. Solution: Don't set an invalid 'undolevels' value. Co-authored-by: Michael Henry <drmikehenry@drmikehenry.com>
Diffstat (limited to 'test/functional/ui/inccommand_user_spec.lua')
-rw-r--r--test/functional/ui/inccommand_user_spec.lua38
1 files changed, 35 insertions, 3 deletions
diff --git a/test/functional/ui/inccommand_user_spec.lua b/test/functional/ui/inccommand_user_spec.lua
index 62c4cac709..da7508fad1 100644
--- a/test/functional/ui/inccommand_user_spec.lua
+++ b/test/functional/ui/inccommand_user_spec.lua
@@ -239,7 +239,8 @@ describe("'inccommand' for user commands", function()
[1] = {background = Screen.colors.Yellow1},
[2] = {foreground = Screen.colors.Blue1, bold = true},
[3] = {reverse = true},
- [4] = {reverse = true, bold = true}
+ [4] = {reverse = true, bold = true},
+ [5] = {foreground = Screen.colors.Blue},
})
screen:attach()
exec_lua(setup_replace_cmd)
@@ -458,9 +459,8 @@ describe("'inccommand' for user commands", function()
assert_alive()
end)
- it('breaking undo chain in Insert mode works properly #20248', function()
+ local function test_preview_break_undo()
command('set inccommand=nosplit')
- command('inoremap . .<C-G>u')
exec_lua([[
vim.api.nvim_create_user_command('Test', function() end, {
nargs = 1,
@@ -490,6 +490,26 @@ describe("'inccommand' for user commands", function()
{2:~ }|
:Test a.a.a.a.^ |
]])
+ feed('<C-V><Esc>u')
+ 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. |
+ {2:~ }|
+ {2:~ }|
+ {2:~ }|
+ {2:~ }|
+ {2:~ }|
+ {2:~ }|
+ {2:~ }|
+ :Test a.a.a.a.{5:^[}u^ |
+ ]])
feed('<Esc>')
screen:expect([[
text on line 1 |
@@ -510,6 +530,18 @@ describe("'inccommand' for user commands", function()
{2:~ }|
|
]])
+ end
+
+ describe('breaking undo chain in Insert mode works properly', function()
+ it('when using i_CTRL-G_u #20248', function()
+ command('inoremap . .<C-G>u')
+ test_preview_break_undo()
+ end)
+
+ it('when setting &l:undolevels to itself #24575', function()
+ command('inoremap . .<Cmd>let &l:undolevels = &l:undolevels<CR>')
+ test_preview_break_undo()
+ end)
end)
end)