diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 076a003e..04c43f05 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -210,9 +210,7 @@ function M.init() -- after installing missing plugins M.load("options") - Util.plugin.fix_imports() - Util.plugin.fix_renames() - Util.plugin.lazy_file() + Util.plugin.setup() M.json.load() end diff --git a/lua/lazyvim/util/init.lua b/lua/lazyvim/util/init.lua index 90f9a89e..5cfd4e77 100644 --- a/lua/lazyvim/util/init.lua +++ b/lua/lazyvim/util/init.lua @@ -10,6 +10,7 @@ local LazyUtil = require("lazy.core.util") ---@field format lazyvim.util.format ---@field plugin lazyvim.util.plugin ---@field extras lazyvim.util.extras +---@field inject lazyvim.util.inject local M = {} ---@type table diff --git a/lua/lazyvim/util/inject.lua b/lua/lazyvim/util/inject.lua new file mode 100644 index 00000000..bf0d11f3 --- /dev/null +++ b/lua/lazyvim/util/inject.lua @@ -0,0 +1,20 @@ +---@class lazyvim.util.inject +local M = {} + +---@generic A: any +---@generic B: any +---@generic C: any +---@generic F: function +---@param fn F|fun(a:A, b:B, c:C) +---@param wrapper fun(a:A, b:B, c:C): boolean? +---@return F +function M.args(fn, wrapper) + return function(...) + if wrapper(...) == false then + return + end + return fn(...) + end +end + +return M diff --git a/lua/lazyvim/util/plugin.lua b/lua/lazyvim/util/plugin.lua index b3650eaa..7491ca7d 100644 --- a/lua/lazyvim/util/plugin.lua +++ b/lua/lazyvim/util/plugin.lua @@ -21,6 +21,12 @@ M.renames = { ["null-ls.nvim"] = "none-ls.nvim", } +function M.setup() + M.fix_imports() + M.fix_renames() + M.lazy_file() +end + -- Properly load file based plugins without blocking the UI function M.lazy_file() M.use_lazy_file = M.use_lazy_file and vim.fn.argc(-1) > 0 @@ -86,23 +92,18 @@ function M.lazy_file() end function M.fix_imports() - local import = Plugin.Spec.import - ---@diagnostic disable-next-line: duplicate-set-field - function Plugin.Spec:import(spec) + Plugin.Spec.import = Util.inject.args(Plugin.Spec.import, function(_, spec) local dep = M.deprecated_extras[spec and spec.import] if dep then dep = dep .. "\n" .. "Please remove the extra to hide this warning." Util.warn(dep, { title = "LazyVim", once = true, stacktrace = true, stacklevel = 6 }) - return + return false end - return import(self, spec) - end + end) end function M.fix_renames() - local add = Plugin.Spec.add - ---@diagnostic disable-next-line: duplicate-set-field - Plugin.Spec.add = function(self, plugin, ...) + Plugin.Spec.add = Util.inject.args(Plugin.Spec.add, function(self, plugin) if type(plugin) == "table" then if M.renames[plugin[1]] then Util.warn( @@ -116,8 +117,7 @@ function M.fix_renames() plugin[1] = M.renames[plugin[1]] end end - return add(self, plugin, ...) - end + end) end return M