feat: add vim.g.lazyvim_user_extras

This commit is contained in:
Ben Yang 2026-01-14 14:14:41 +08:00
parent c64a61734f
commit abfc2658a5

View file

@ -9,8 +9,6 @@ local prios = {
["lazyvim.plugins.extras.coding.blink"] = 5,
["lazyvim.plugins.extras.lang.typescript"] = 5,
["lazyvim.plugins.extras.formatting.prettier"] = 10,
-- default core extra priority is 20
-- default priority is 50
["lazyvim.plugins.extras.editor.aerial"] = 100,
["lazyvim.plugins.extras.editor.outline"] = 100,
["lazyvim.plugins.extras.ui.alpha"] = 19,
@ -18,6 +16,9 @@ local prios = {
["lazyvim.plugins.extras.ui.mini-starter"] = 19,
}
local default_core_extra_prio = 20
local default_prio = 50
if vim.g.xtras_prios then
prios = vim.tbl_deep_extend("force", prios, vim.g.xtras_prios or {})
end
@ -53,7 +54,29 @@ end
-- Add default extras
for name, extra in pairs(defaults) do
if extra.enabled then
prios[name] = prios[name] or 20
prios[name] = prios[name] or default_core_extra_prio
extras[#extras + 1] = name
end
end
-- Add user defined extras via `vim.g.lazyvim_user_extras`
local user_defined_extras = vim.g.lazyvim_user_extras or {}
for k, v in pairs(user_defined_extras) do
local is_atomic_value = type(k) == "number"
local name = is_atomic_value and v or k
local priority = is_atomic_value and default_prio or v
-- Validation logic: Check for existing priority conflict
if prios[name] and prios[name] ~= priority then
local msg = {
"Extras: you are not allowed to override priorities of either core default extras or extras defined in `lazyvim.json`",
string.format("- name of extras: %s", name),
string.format("- existing priority: %d", prios[name]),
string.format("- custom priority: %d", priority),
}
vim.notify(table.concat(msg, "\n"), vim.log.levels.WARN, { title = "LazyVim" })
else
prios[name] = priority
extras[#extras + 1] = name
end
end
@ -67,8 +90,8 @@ if vim.g.vscode then
end
table.sort(extras, function(a, b)
local pa = prios[a] or 50
local pb = prios[b] or 50
local pa = prios[a] or default_prio
local pb = prios[b] or default_prio
if pa == pb then
return a < b
end