diff --git a/lua/lazydev/buf.lua b/lua/lazydev/buf.lua index 2b0aac8..47abb0e 100644 --- a/lua/lazydev/buf.lua +++ b/lua/lazydev/buf.lua @@ -141,6 +141,11 @@ function M.on_mod(buf, modname) if path then ws:add(path) end + else + local modpath = Pkg.find_rock(modname) + if modpath then + ws:add(modpath) + end end end diff --git a/lua/lazydev/pkg.lua b/lua/lazydev/pkg.lua index 41b2bf8..a8b4983 100644 --- a/lua/lazydev/pkg.lua +++ b/lua/lazydev/pkg.lua @@ -69,6 +69,24 @@ function M.get_plugin_path(name) end end +function M.find_rock(modname) + if not is_lazy then + return + end + local Config = require("lazy.core.config") + for _, plugin in pairs(Config.spec.plugins) do + if plugin._.pkg and plugin._.pkg.source == "rockspec" then + local root = Config.options.rocks.root .. "/" .. plugin.name + root = root .. "/share/lua/5.1" + for _, p in ipairs({ "/init.lua", ".lua" }) do + if vim.uv.fs_stat(root .. "/" .. modname:gsub("%.", "/") .. p) then + return root + end + end + end + end +end + ---@param modname string ---@return string[] function M.find_roots(modname)