mirror of https://github.com/folke/lazy.nvim.git
feat(plugin): dev.path can now be a function (#1157)
In some case, `dev.path .. plugin.name` is not enoguh. For example, when using `ghq` to manage projects, plugin directories may vary by onewrs of the plugins. With this change, users can do something like below ``` lua require("lazy").setup("plugins", { dev = { path = function(p) -- ghq local path, cnt = string.gsub(p.url, "^https://(.*)%.git$", "~/ghq/%1") if cnt == 1 then return path end -- fallback to default return "~/projects/" .. plugin.name end, }, }) ```
This commit is contained in:
parent
42694c4fda
commit
a6f782adc1
|
@ -320,7 +320,7 @@ return {
|
||||||
filter = true,
|
filter = true,
|
||||||
},
|
},
|
||||||
dev = {
|
dev = {
|
||||||
-- directory where you store your local plugin projects
|
---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects
|
||||||
path = "~/projects",
|
path = "~/projects",
|
||||||
---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub
|
---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub
|
||||||
patterns = {}, -- For example {"folke"}
|
patterns = {}, -- For example {"folke"}
|
||||||
|
|
|
@ -30,7 +30,7 @@ M.defaults = {
|
||||||
filter = true,
|
filter = true,
|
||||||
},
|
},
|
||||||
dev = {
|
dev = {
|
||||||
-- directory where you store your local plugin projects
|
---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects
|
||||||
path = "~/projects",
|
path = "~/projects",
|
||||||
---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub
|
---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub
|
||||||
patterns = {}, -- For example {"folke"}
|
patterns = {}, -- For example {"folke"}
|
||||||
|
@ -213,7 +213,9 @@ function M.setup(opts)
|
||||||
table.insert(M.options.install.colorscheme, "habamax")
|
table.insert(M.options.install.colorscheme, "habamax")
|
||||||
|
|
||||||
M.options.root = Util.norm(M.options.root)
|
M.options.root = Util.norm(M.options.root)
|
||||||
|
if type(M.options.dev.path) == "string" then
|
||||||
M.options.dev.path = Util.norm(M.options.dev.path)
|
M.options.dev.path = Util.norm(M.options.dev.path)
|
||||||
|
end
|
||||||
M.options.lockfile = Util.norm(M.options.lockfile)
|
M.options.lockfile = Util.norm(M.options.lockfile)
|
||||||
M.options.readme.root = Util.norm(M.options.readme.root)
|
M.options.readme.root = Util.norm(M.options.readme.root)
|
||||||
|
|
||||||
|
|
|
@ -106,11 +106,16 @@ function Spec:add(plugin, results)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- dev plugins
|
-- dev plugins
|
||||||
if
|
if plugin.dev then
|
||||||
plugin.dev
|
local dir_dev
|
||||||
and (not Config.options.dev.fallback or vim.fn.isdirectory(Config.options.dev.path .. "/" .. plugin.name) == 1)
|
if type(Config.options.dev.path) == "string" then
|
||||||
then
|
dir_dev = Config.options.dev.path .. "/" .. plugin.name
|
||||||
dir = Config.options.dev.path .. "/" .. plugin.name
|
else
|
||||||
|
dir_dev = Util.norm(Config.options.dev.path(plugin))
|
||||||
|
end
|
||||||
|
if not Config.options.dev.fallback or vim.fn.isdirectory(dir_dev) == 1 then
|
||||||
|
dir = dir_dev
|
||||||
|
end
|
||||||
elseif plugin.dev == false then
|
elseif plugin.dev == false then
|
||||||
-- explicitely select the default path
|
-- explicitely select the default path
|
||||||
dir = Config.options.root .. "/" .. plugin.name
|
dir = Config.options.root .. "/" .. plugin.name
|
||||||
|
|
Loading…
Reference in New Issue