fix(plugin): LazyFile now properly deals with deleted buffers. Fixes #1877

This commit is contained in:
Folke Lemaitre
2023-10-26 07:38:53 +02:00
parent 09eafc60ef
commit 4558407574

View File

@ -76,11 +76,13 @@ function M.lazy_file()
local events = {} ---@type {event: string, buf: number, data?: any}[] local events = {} ---@type {event: string, buf: number, data?: any}[]
local done = false
local function load() local function load()
if #events == 0 then if #events == 0 or done then
return return
end end
pcall(vim.api.nvim_del_augroup_by_name, "lazy_file") done = true
vim.api.nvim_del_augroup_by_name("lazy_file")
---@type table<string,string[]> ---@type table<string,string[]>
local skips = {} local skips = {}
@ -90,17 +92,19 @@ function M.lazy_file()
vim.api.nvim_exec_autocmds("User", { pattern = "LazyFile", modeline = false }) vim.api.nvim_exec_autocmds("User", { pattern = "LazyFile", modeline = false })
for _, event in ipairs(events) do for _, event in ipairs(events) do
Event.trigger({ if vim.api.nvim_buf_is_valid(event.buf) then
event = event.event,
exclude = skips[event.event],
data = event.data,
buf = event.buf,
})
if vim.bo[event.buf].filetype then
Event.trigger({ Event.trigger({
event = "FileType", event = event.event,
exclude = skips[event.event],
data = event.data,
buf = event.buf, buf = event.buf,
}) })
if vim.bo[event.buf].filetype then
Event.trigger({
event = "FileType",
buf = event.buf,
})
end
end end
end end
vim.api.nvim_exec_autocmds("CursorMoved", { modeline = false }) vim.api.nvim_exec_autocmds("CursorMoved", { modeline = false })