mirror of https://github.com/folke/lazy.nvim.git
feat(spec): `config` can be `true` or a `table` that will be passed to `require("plugin").setup(config)`
This commit is contained in:
parent
9e983898b1
commit
2a7b0047dd
16
README.md
16
README.md
|
@ -90,7 +90,7 @@ require("lazy").setup({
|
||||||
| **enabled** | `boolean?` or `fun():boolean` | When `false`, or if the `function` returns false, then this plugin will not be used |
|
| **enabled** | `boolean?` or `fun():boolean` | When `false`, or if the `function` returns false, then this plugin will not be used |
|
||||||
| **dependencies** | `LazySpec[]` | A list of plugin specs that should be loaded when the plugin loads. Dependencies are always lazy-loaded unless specified otherwise |
|
| **dependencies** | `LazySpec[]` | A list of plugin specs that should be loaded when the plugin loads. Dependencies are always lazy-loaded unless specified otherwise |
|
||||||
| **init** | `fun(LazyPlugin)` | `init` functions are always executed during startup |
|
| **init** | `fun(LazyPlugin)` | `init` functions are always executed during startup |
|
||||||
| **config** | `fun(LazyPlugin)` | `config` is executed when the plugin loads |
|
| **config** | `fun(LazyPlugin)` or `true` or `table` | `config` is executed when the plugin loads. You can also set to `true` or pass a `table`, that will be passed to `require("plugin").setup(opts)` |
|
||||||
| **build** | `fun(LazyPlugin)` | `build` is executed when a plugin is installed or updated |
|
| **build** | `fun(LazyPlugin)` | `build` is executed when a plugin is installed or updated |
|
||||||
| **branch** | `string?` | Branch of the repository |
|
| **branch** | `string?` | Branch of the repository |
|
||||||
| **tag** | `string?` | Tag of the repository |
|
| **tag** | `string?` | Tag of the repository |
|
||||||
|
@ -202,6 +202,20 @@ return {
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- the above could also be written as
|
||||||
|
{
|
||||||
|
"nvim-neorg/neorg",
|
||||||
|
ft = "norg",
|
||||||
|
config = true, -- run require("norg").setup()
|
||||||
|
},
|
||||||
|
|
||||||
|
-- or set custom config
|
||||||
|
{
|
||||||
|
"nvim-neorg/neorg",
|
||||||
|
ft = "norg",
|
||||||
|
config = { foo = "bar" }, -- run require("norg").setup({foo = "bar"})
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"dstein64/vim-startuptime",
|
"dstein64/vim-startuptime",
|
||||||
-- lazy-load on a command
|
-- lazy-load on a command
|
||||||
|
|
|
@ -142,7 +142,7 @@ function M.load(plugins, reason)
|
||||||
|
|
||||||
M.packadd(plugin.dir)
|
M.packadd(plugin.dir)
|
||||||
if plugin.config then
|
if plugin.config then
|
||||||
Util.try(plugin.config, "Failed to run `config` for " .. plugin.name)
|
M.config(plugin)
|
||||||
end
|
end
|
||||||
|
|
||||||
plugin._.loaded.time = Util.track().time
|
plugin._.loaded.time = Util.track().time
|
||||||
|
@ -154,6 +154,40 @@ function M.load(plugins, reason)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- runs plugin config
|
||||||
|
---@param plugin LazyPlugin
|
||||||
|
function M.config(plugin)
|
||||||
|
local fn
|
||||||
|
if type(plugin.config) == "function" then
|
||||||
|
fn = plugin.config
|
||||||
|
else
|
||||||
|
local normname = Util.normname(plugin.name)
|
||||||
|
---@type table<string, string>
|
||||||
|
local mods = {}
|
||||||
|
Util.ls(plugin.dir .. "/lua", function(_, modname)
|
||||||
|
modname = modname:gsub("%.lua$", "")
|
||||||
|
mods[modname] = modname
|
||||||
|
local modnorm = Util.normname(modname)
|
||||||
|
-- if we found an exact match, then use that
|
||||||
|
if modnorm == normname then
|
||||||
|
mods = { modname }
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
mods = vim.tbl_values(mods)
|
||||||
|
if #mods == 1 then
|
||||||
|
fn = function()
|
||||||
|
require(mods[1]).setup(plugin.config == true and {} or plugin.config)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return Util.error(
|
||||||
|
"Lua module not found for config of " .. plugin.name .. ". Please use a `config()` function instead"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Util.try(fn, "Failed to run `config` for " .. plugin.name)
|
||||||
|
end
|
||||||
|
|
||||||
---@param path string
|
---@param path string
|
||||||
function M.packadd(path)
|
function M.packadd(path)
|
||||||
M.source_runtime(path, "plugin")
|
M.source_runtime(path, "plugin")
|
||||||
|
|
|
@ -27,6 +27,11 @@ function M.track(data, time)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@param name string
|
||||||
|
function M.normname(name)
|
||||||
|
return name:lower():gsub("^n?vim%-", ""):gsub("%.n?vim$", ""):gsub("%.lua", ""):gsub("[^a-z]+", "")
|
||||||
|
end
|
||||||
|
|
||||||
function M.norm(path)
|
function M.norm(path)
|
||||||
if path:sub(1, 1) == "~" then
|
if path:sub(1, 1) == "~" then
|
||||||
local home = vim.loop.os_homedir()
|
local home = vim.loop.os_homedir()
|
||||||
|
|
|
@ -16,6 +16,20 @@ return {
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- the above could also be written as
|
||||||
|
{
|
||||||
|
"nvim-neorg/neorg",
|
||||||
|
ft = "norg",
|
||||||
|
config = true, -- run require("norg").setup()
|
||||||
|
},
|
||||||
|
|
||||||
|
-- or set custom config
|
||||||
|
{
|
||||||
|
"nvim-neorg/neorg",
|
||||||
|
ft = "norg",
|
||||||
|
config = { foo = "bar" }, -- run require("norg").setup({foo = "bar"})
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"dstein64/vim-startuptime",
|
"dstein64/vim-startuptime",
|
||||||
-- lazy-load on a command
|
-- lazy-load on a command
|
||||||
|
|
Loading…
Reference in New Issue