diff options
-rw-r--r-- | src/nvim/ex_getln.c | 2 | ||||
-rw-r--r-- | test/functional/ui/inccommand_user_spec.lua | 38 |
2 files changed, 36 insertions, 4 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index ece6257c4a..87e45cbb66 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -2357,7 +2357,7 @@ static void cmdpreview_prepare(CpInfo *cpinfo) set_put(ptr_t, &saved_bufs, buf); u_clearall(buf); - buf->b_p_ul = LONG_MAX; // Make sure we can undo all changes + buf->b_p_ul = INT_MAX; // Make sure we can undo all changes } CpWinInfo cp_wininfo; 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) |