Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 34 additions & 4 deletions lua/core/pack.lua
Original file line number Diff line number Diff line change
Expand Up @@ -46,20 +46,50 @@ function Lazy:load_plugins()
return list
end

-- remove plugins in (dependencies and disabled_plugins_table) recursively
local function iterate_dependencies(dependencies, disabled_plugins_table)
for i = #dependencies, 1, -1 do
local dependency = dependencies[i]
if type(dependency) == "table" then
for key, value in pairs(dependency) do
if key == "dependencies" and type(value) == "table" then
iterate_dependencies(value, disabled_plugins_table)
elseif key == 1 and disabled_plugins_table[value] then
table.remove(dependencies, i)
end
end
elseif type(dependency) == "string" and disabled_plugins_table[dependency] then
table.remove(dependencies, i)
end
end
end

local remove_in_dependencies = function(conf, disabled_plugins_table)
if conf["dependencies"] ~= nil then
iterate_dependencies(conf["dependencies"], disabled_plugins_table)
end
end

append_nativertp()

-- init hashtable for disabled_plugins
local disabled_plugins_table = {}
for _, plugin in ipairs(settings.disabled_plugins) do
disabled_plugins_table[plugin] = true
end
for _, m in ipairs(get_plugins_list()) do
-- require modules returned from `get_plugins_list()` function.
local modules = require(m:sub(0, #m - 4))
if type(modules) == "table" then
for name, conf in pairs(modules) do
self.modules[#self.modules + 1] = vim.tbl_extend("force", { name }, conf)
-- add plugin which not in disabled_plugins_table
if not disabled_plugins_table[name] then
remove_in_dependencies(conf, disabled_plugins_table)
self.modules[#self.modules + 1] = vim.tbl_extend("force", { name }, conf)
end
end
end
end
for _, name in ipairs(settings.disabled_plugins) do
self.modules[#self.modules + 1] = { name, enabled = false }
end
end

function Lazy:load_lazy()
Expand Down