fix: set nested before executing callback (#17801)

This commit is contained in:
TJ DeVries
2022-03-30 11:59:36 -04:00
committed by GitHub
parent 1217694f21
commit 7fb2310edb
2 changed files with 32 additions and 2 deletions

View File

@@ -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 {

View File

@@ -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()