perf(plugin): minor optim to resolve imports a bit faster

This commit is contained in:
Folke Lemaitre 2024-07-01 07:07:49 +02:00
parent 1fad61712b
commit a9d7ade203
No known key found for this signature in database
GPG Key ID: 41F8B1FBACAE2040
2 changed files with 13 additions and 8 deletions

View File

@ -150,8 +150,11 @@ function Spec:import(spec)
local modspecs = {}
if type(import) == "string" then
Util.lsmod(import, function(modname)
Util.lsmod(import, function(modname, modpath)
modspecs[#modspecs + 1] = modname
package.preload[modname] = function()
return loadfile(modpath)()
end
end)
table.sort(modspecs)
else

View File

@ -287,7 +287,7 @@ function M.find_root(modname)
local ret = require("lazy.core.cache").find(modname, {
rtp = true,
paths = paths,
patterns = { "", ".lua" },
patterns = { ".lua", "" },
})[1]
if not ret and cached then
@ -295,25 +295,27 @@ function M.find_root(modname)
ret = require("lazy.core.cache").find(modname, {
rtp = false,
paths = paths,
patterns = { "", ".lua" },
patterns = { ".lua", "" },
})[1]
end
if ret then
local root = ret.modpath:gsub("/init%.lua$", ""):gsub("%.lua$", "")
return root
return ret.modpath:gsub("%.lua$", ""), ret.modpath
end
end
---@param modname string
---@param fn fun(modname:string, modpath:string)
function M.lsmod(modname, fn)
local root = M.find_root(modname)
local root, match = M.find_root(modname)
if not root then
return
end
if vim.uv.fs_stat(root .. ".lua") then
fn(modname, root .. ".lua")
if match:sub(-4) == ".lua" then
fn(modname, match)
if not vim.uv.fs_stat(root) then
return
end
end
M.ls(root, function(path, name, type)