Skip to content

Commit ed2fb69

Browse files
committed
better FileType event handler
1 parent 3b231ec commit ed2fb69

File tree

1 file changed

+31
-13
lines changed

1 file changed

+31
-13
lines changed

lua/strive/init.lua

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -793,16 +793,9 @@ function Plugin:on(events)
793793
group = id,
794794
pattern = pattern,
795795
once = true,
796-
callback = function(args)
797-
if not self.loaded and self:load() then
798-
-- Re-emit the event once after plugin is loaded
799-
vim.schedule(function()
800-
api.nvim_exec_autocmds(event, {
801-
buffer = args.buf,
802-
modeline = false,
803-
data = args.data,
804-
})
805-
end)
796+
callback = function()
797+
if not self.loaded then
798+
self:load()
806799
end
807800
end,
808801
})
@@ -822,9 +815,34 @@ function Plugin:ft(filetypes)
822815
group = id,
823816
pattern = self.filetypes,
824817
once = true,
825-
callback = function()
826-
if not self.loaded then
827-
self:load()
818+
callback = function(args)
819+
if not self.loaded and self:load() then
820+
local augroup_name = nil
821+
if self.plugin_name:find('lspconfig', 1, true) then
822+
augroup_name = 'nvim.lsp.enable'
823+
else
824+
local res = api.nvim_exec2('autocmd FileType', { output = true })
825+
if not res.output then
826+
return
827+
end
828+
res = { unpack(vim.split(res.output, '\n'), 1) }
829+
for i, item in ipairs(res) do
830+
if item:find(self.plugin_name, 1, true) then
831+
augroup_name = res[i - 1]:match('^%s*(%S+)')
832+
end
833+
end
834+
end
835+
836+
if augroup_name then
837+
vim.schedule(function()
838+
api.nvim_exec_autocmds('FileType', {
839+
group = augroup_name,
840+
buffer = args.buf,
841+
data = args.data,
842+
modeline = false,
843+
})
844+
end)
845+
end
828846
end
829847
end,
830848
})

0 commit comments

Comments
 (0)