diff --git a/lua/lazy/core/handler/event.lua b/lua/lazy/core/handler/event.lua index 4303d9d..8c64231 100644 --- a/lua/lazy/core/handler/event.lua +++ b/lua/lazy/core/handler/event.lua @@ -28,11 +28,11 @@ function M:_add(value) return end Util.track({ [self.type] = value }) - local groups = M.get_augroups(event) + local groups = M.get_augroups(event, pattern) -- load the plugins Loader.load(self.active[value], { [self.type] = value }) -- check if any plugin created an event handler for this event and fire the group - self:trigger(event, groups) + self:trigger(event, pattern, groups) Util.track() end, }) @@ -45,11 +45,12 @@ end -- Get all augroups for the events ---@param event string -function M.get_augroups(event) +---@param pattern? string +function M.get_augroups(event, pattern) local events = M.trigger_events[event] or { event } ---@type table local groups = {} - for _, autocmd in ipairs(vim.api.nvim_get_autocmds({ event = events })) do + for _, autocmd in ipairs(vim.api.nvim_get_autocmds({ event = events, pattern = pattern })) do if autocmd.group then groups[autocmd.group] = true end @@ -60,17 +61,18 @@ end ---@param event string|string[] ---@param pattern? string ---@param groups table -function M:trigger(event, groups) +function M:trigger(event, pattern, groups) local events = M.trigger_events[event] or { event } ---@cast events string[] for _, e in ipairs(events) do - for _, autocmd in ipairs(vim.api.nvim_get_autocmds({ event = e })) do + for _, autocmd in ipairs(vim.api.nvim_get_autocmds({ event = e, pattern = pattern })) do if autocmd.event == e and autocmd.group and not groups[autocmd.group] then if Config.options.debug then Util.info({ "# Firing Events", " - **group:** `" .. autocmd.group_name .. "`", " - **event:** " .. autocmd.event, + pattern and (" - **pattern:** " .. pattern), }) end Util.track({ event = autocmd.group_name })