You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

49 lines
1.5 KiB

local plugins_dir = vim.fn.stdpath('config') .. '/lua/plugins'
local plugin_files = vim.fn.globpath(plugins_dir, '*.lua', false, true)
local plugins_to_add = {}
local plugins_to_setup = {}
-- Collect all plugin configs (excluding init.lua)
for _, file in ipairs(plugin_files) do
local filename = vim.fn.fnamemodify(file, ':t:r')
if filename ~= 'init' then
local ok, plugin = pcall(require, 'plugins.' .. filename)
if ok and type(plugin) == 'table' then
if not plugin.disabled then
if plugin.install then
table.insert(plugins_to_add, plugin.install)
end
if plugin.dependencies then
vim.list_extend(
plugins_to_add,
plugin.dependencies
)
end
if plugin.setup and type(plugin.setup) == 'function' then
table.insert(plugins_to_setup, {
name = filename,
setup = plugin.setup
})
end
end
else
vim.notify('Failed to load plugin: ' .. filename .. ': ' .. tostring(plugin), vim.log.levels.WARN)
end
end
end
-- Add all plugins
vim.pack.add(plugins_to_add)
-- Run all setup functions
for _, plugin in ipairs(plugins_to_setup) do
local ok, err = pcall(plugin.setup)
if not ok then
vim.notify('Failed to setup plugin ' .. plugin.name .. ': ' .. tostring(err), vim.log.levels.ERROR)
end
end