mirror of
https://github.com/LazyVim/LazyVim.git
synced 2025-06-24 17:58:51 +02:00
feat(extras): big rework of default extras
This commit is contained in:
parent
0416376733
commit
525377dee9
13 changed files with 222 additions and 200 deletions
|
@ -144,8 +144,10 @@ M.json = {
|
|||
extras = {}, ---@type string[]
|
||||
},
|
||||
}
|
||||
M.json_loaded = false
|
||||
|
||||
function M.json.load()
|
||||
M.json_loaded = true
|
||||
local f = io.open(M.json.path, "r")
|
||||
if f then
|
||||
local data = f:read("*a")
|
||||
|
@ -322,6 +324,62 @@ function M.init()
|
|||
M.json.load()
|
||||
end
|
||||
|
||||
---@alias LazyVimDefault {name: string, extra: string, enabled?: boolean, origin?: "global" | "default" | "extra" }
|
||||
|
||||
local default_extras ---@type table<string, LazyVimDefault>
|
||||
function M.get_defaults()
|
||||
if default_extras then
|
||||
return default_extras
|
||||
end
|
||||
---@type table<string, LazyVimDefault[]>
|
||||
local checks = {
|
||||
picker = {
|
||||
{ name = "fzf", extra = "editor.fzf" },
|
||||
{ name = "snacks", extra = "editor.snacks_picker" },
|
||||
{ name = "telescope", extra = "editor.telescope" },
|
||||
},
|
||||
cmp = {
|
||||
{ name = "blink.cmp", extra = "coding.blink", enabled = vim.fn.has("nvim-0.10") == 1 },
|
||||
{ name = "nvim-cmp", extra = "coding.nvim-cmp" },
|
||||
},
|
||||
explorer = {
|
||||
{ name = "neo-tree", extra = "editor.neo-tree" },
|
||||
{ name = "snacks", extra = "editor.snacks_explorer" },
|
||||
},
|
||||
}
|
||||
default_extras = {}
|
||||
for name, check in pairs(checks) do
|
||||
local valid = {} ---@type string[]
|
||||
for _, extra in ipairs(check) do
|
||||
if extra.enabled ~= false then
|
||||
valid[#valid + 1] = extra.name
|
||||
end
|
||||
end
|
||||
local origin = "default"
|
||||
local use = vim.g["lazyvim_" .. name]
|
||||
use = vim.tbl_contains(valid, use or "auto") and use or nil
|
||||
origin = use and "global" or origin
|
||||
for _, extra in ipairs(use and {} or check) do
|
||||
if extra.enabled ~= false and LazyVim.has_extra(extra.extra) then
|
||||
use = extra.name
|
||||
break
|
||||
end
|
||||
end
|
||||
origin = use and "extra" or origin
|
||||
use = use or valid[1]
|
||||
for _, extra in ipairs(check) do
|
||||
local import = "lazyvim.plugins.extras." .. extra.extra
|
||||
extra = vim.deepcopy(extra)
|
||||
extra.enabled = extra.name == use
|
||||
if extra.enabled then
|
||||
extra.origin = origin
|
||||
end
|
||||
default_extras[import] = extra
|
||||
end
|
||||
end
|
||||
return default_extras
|
||||
end
|
||||
|
||||
setmetatable(M, {
|
||||
__index = function(_, key)
|
||||
if options == nil then
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue