mirror of
https://github.com/neovim/neovim.git
synced 2026-02-01 09:34:29 +00:00
fix: set nested before executing callback (#17801)
This commit is contained in:
@@ -2022,6 +2022,11 @@ char_u *getnextac(int c, void *cookie, int indent, bool do_concat)
|
||||
verbose_leave_scroll();
|
||||
}
|
||||
|
||||
// Make sure to set autocmd_nested before executing
|
||||
// lua code, so that it works properly
|
||||
autocmd_nested = ac->nested;
|
||||
current_sctx = ac->script_ctx;
|
||||
|
||||
if (ac->exec.type == CALLABLE_CB) {
|
||||
typval_T argsin = TV_INITIAL_VALUE;
|
||||
typval_T rettv = TV_INITIAL_VALUE;
|
||||
@@ -2052,8 +2057,6 @@ char_u *getnextac(int c, void *cookie, int indent, bool do_concat)
|
||||
if (oneshot) {
|
||||
aucmd_del(ac);
|
||||
}
|
||||
autocmd_nested = ac->nested;
|
||||
current_sctx = ac->script_ctx;
|
||||
if (ac->last) {
|
||||
acp->nextcmd = NULL;
|
||||
} else {
|
||||
|
||||
@@ -334,6 +334,33 @@ describe('autocmd api', function()
|
||||
local aus2 = meths.get_autocmds { group = auname, event = "InsertEnter" }
|
||||
eq(0, #aus2)
|
||||
end)
|
||||
|
||||
it('should respect nested', function()
|
||||
local bufs = exec_lua [[
|
||||
local count = 0
|
||||
vim.api.nvim_create_autocmd("BufNew", {
|
||||
once = false,
|
||||
nested = true,
|
||||
callback = function()
|
||||
count = count + 1
|
||||
if count > 5 then
|
||||
return true
|
||||
end
|
||||
|
||||
vim.cmd(string.format("new README_%s.md", count))
|
||||
end
|
||||
})
|
||||
|
||||
vim.cmd "new First.md"
|
||||
|
||||
return vim.api.nvim_list_bufs()
|
||||
]]
|
||||
|
||||
-- 1 for the first buffer
|
||||
-- 2 for First.md
|
||||
-- 3-7 for the 5 we make in the autocmd
|
||||
eq({1, 2, 3, 4, 5, 6, 7}, bufs)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('groups', function()
|
||||
|
||||
Reference in New Issue
Block a user