mirror of
https://github.com/folke/lazy.nvim.git
synced 2025-06-28 19:34:15 +00:00
fix(event): fix running BufRead cmd when plugin loaded by BufRead or BufReadPre
This commit is contained in:
parent
83a625f5c8
commit
c2db5075ef
1 changed files with 19 additions and 29 deletions
|
@ -7,10 +7,6 @@ local Loader = require("lazy.core.loader")
|
||||||
---@field group number
|
---@field group number
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
M.trigger_events = {
|
|
||||||
BufRead = { "BufReadPre", "BufRead" },
|
|
||||||
BufReadPost = { "BufReadPre", "BufRead", "BufReadPost" },
|
|
||||||
}
|
|
||||||
M.group = vim.api.nvim_create_augroup("lazy_handler_event", { clear = true })
|
M.group = vim.api.nvim_create_augroup("lazy_handler_event", { clear = true })
|
||||||
|
|
||||||
---@param value string
|
---@param value string
|
||||||
|
@ -28,11 +24,11 @@ function M:_add(value)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
Util.track({ [self.type] = value })
|
Util.track({ [self.type] = value })
|
||||||
local groups = M.get_augroups(event, pattern)
|
local existing_groups = M.get_augroups(event, pattern)
|
||||||
-- load the plugins
|
-- load the plugins
|
||||||
Loader.load(self.active[value], { [self.type] = value })
|
Loader.load(self.active[value], { [self.type] = value })
|
||||||
-- check if any plugin created an event handler for this event and fire the group
|
-- check if any plugin created an event handler for this event and fire the group
|
||||||
self:trigger(event, pattern, groups)
|
self:trigger(event, pattern, existing_groups)
|
||||||
Util.track()
|
Util.track()
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
@ -47,10 +43,8 @@ end
|
||||||
---@param event string
|
---@param event string
|
||||||
---@param pattern? string
|
---@param pattern? string
|
||||||
function M.get_augroups(event, pattern)
|
function M.get_augroups(event, pattern)
|
||||||
local events = M.trigger_events[event] or { event }
|
|
||||||
---@type table<string,true>
|
|
||||||
local groups = {}
|
local groups = {}
|
||||||
for _, autocmd in ipairs(vim.api.nvim_get_autocmds({ event = events, pattern = pattern })) do
|
for _, autocmd in ipairs(vim.api.nvim_get_autocmds({ event = event, pattern = pattern })) do
|
||||||
if autocmd.group then
|
if autocmd.group then
|
||||||
groups[autocmd.group] = true
|
groups[autocmd.group] = true
|
||||||
end
|
end
|
||||||
|
@ -60,27 +54,23 @@ end
|
||||||
|
|
||||||
---@param event string|string[]
|
---@param event string|string[]
|
||||||
---@param pattern? string
|
---@param pattern? string
|
||||||
---@param groups table<string,true>
|
---@param existing_groups table<string,true>
|
||||||
function M:trigger(event, pattern, groups)
|
function M:trigger(event, pattern, existing_groups)
|
||||||
local events = M.trigger_events[event] or { event }
|
for _, autocmd in ipairs(vim.api.nvim_get_autocmds({ event = event, pattern = pattern })) do
|
||||||
---@cast events string[]
|
if autocmd.group and not existing_groups[autocmd.group] then
|
||||||
for _, e in ipairs(events) do
|
if Config.options.debug then
|
||||||
for _, autocmd in ipairs(vim.api.nvim_get_autocmds({ event = e, pattern = pattern })) do
|
Util.info({
|
||||||
if autocmd.event == e and autocmd.group and not groups[autocmd.group] then
|
"# Firing Events",
|
||||||
if Config.options.debug then
|
" - **group:** `" .. autocmd.group_name .. "`",
|
||||||
Util.info({
|
" - **event:** " .. autocmd.event,
|
||||||
"# Firing Events",
|
pattern and (" - **pattern:** " .. pattern),
|
||||||
" - **group:** `" .. autocmd.group_name .. "`",
|
})
|
||||||
" - **event:** " .. autocmd.event,
|
|
||||||
pattern and (" - **pattern:** " .. pattern),
|
|
||||||
})
|
|
||||||
end
|
|
||||||
Util.track({ event = autocmd.group_name })
|
|
||||||
Util.try(function()
|
|
||||||
vim.api.nvim_exec_autocmds(autocmd.event, { group = autocmd.group, modeline = false })
|
|
||||||
Util.track()
|
|
||||||
end)
|
|
||||||
end
|
end
|
||||||
|
Util.track({ event = autocmd.group_name })
|
||||||
|
Util.try(function()
|
||||||
|
vim.api.nvim_exec_autocmds(autocmd.event, { group = autocmd.group, modeline = false })
|
||||||
|
Util.track()
|
||||||
|
end)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue