mirror of
https://github.com/LunarVim/LunarVim.git
synced 2024-09-21 02:55:09 +02:00
46 lines
1.1 KiB
Lua
46 lines
1.1 KiB
Lua
|
local ft = {}
|
||
|
|
||
|
ft.find_lua_ftplugins = function(filetype)
|
||
|
local patterns = {
|
||
|
string.format("ftplugin/%s.lua", filetype),
|
||
|
|
||
|
-- Looks like we don't need this, because the first one works
|
||
|
-- string.format("after/ftplugin/%s.lua", filetype),
|
||
|
}
|
||
|
|
||
|
local result = {}
|
||
|
for _, pat in ipairs(patterns) do
|
||
|
vim.list_extend(result, vim.api.nvim_get_runtime_file(pat, true))
|
||
|
end
|
||
|
|
||
|
return result
|
||
|
end
|
||
|
|
||
|
ft.do_filetype = function(filetype)
|
||
|
local ftplugins = ft.find_lua_ftplugins(filetype)
|
||
|
|
||
|
local f_env = setmetatable({
|
||
|
-- Override print, so the prints still go through, otherwise it's confusing for people
|
||
|
print = vim.schedule_wrap(print),
|
||
|
}, {
|
||
|
-- Buf default back read/write to whatever is going on in the global landscape
|
||
|
__index = _G,
|
||
|
__newindex = _G,
|
||
|
})
|
||
|
|
||
|
for _, file in ipairs(ftplugins) do
|
||
|
local f = loadfile(file)
|
||
|
if not f then
|
||
|
vim.api.nvim_err_writeln("Unable to load file: " .. file)
|
||
|
else
|
||
|
local ok, msg = pcall(setfenv(f, f_env))
|
||
|
|
||
|
if not ok then
|
||
|
vim.api.nvim_err_writeln("Error while processing file: " .. file .. "\n" .. msg)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return ft
|