diff --git a/runtime/lua/vim/snippet.lua b/runtime/lua/vim/snippet.lua index 96b5e76ddd..31583e2ae4 100644 --- a/runtime/lua/vim/snippet.lua +++ b/runtime/lua/vim/snippet.lua @@ -480,7 +480,7 @@ local function setup_autocmds(bufnr) desc = 'Stop the snippet session when leaving select mode', buf = bufnr, }, function(args) - if args.match ~= 's:n' then + if args.match ~= 's:n' and args.match ~= 'i:n' then return end vim.schedule(function() diff --git a/test/functional/lua/snippet_spec.lua b/test/functional/lua/snippet_spec.lua index 36cf2ef7f5..b6c3023bca 100644 --- a/test/functional/lua/snippet_spec.lua +++ b/test/functional/lua/snippet_spec.lua @@ -280,6 +280,16 @@ describe('vim.snippet', function() poke_eventloop() eq(false, exec_lua('return vim.snippet.active()')) eq(0, #api.nvim_buf_get_extmarks(0, ns, 0, -1, {})) + + feed('dal') + test_expand_success({ 'local $1 = ${2:value}' }, { 'local = value' }) + eq('i', fn.mode()) + eq(true, exec_lua('return vim.snippet.active()')) + t.neq(0, #api.nvim_buf_get_extmarks(0, ns, 0, -1, {})) + feed('') + poke_eventloop() + eq(false, exec_lua('return vim.snippet.active()')) + eq(0, #api.nvim_buf_get_extmarks(0, ns, 0, -1, {})) end) it('stop session when jumping to $0', function()