fix: too early setup on initial extension access (#1601)
This commit is contained in:
@@ -610,6 +610,8 @@ telescope.register_extension({mod}) *telescope.register_extension()*
|
||||
|
||||
telescope.load_extension({name}) *telescope.load_extension()*
|
||||
Load an extension.
|
||||
- Notes:
|
||||
- Loading triggers ext setup via the config passed in |telescope.setup|
|
||||
|
||||
|
||||
Parameters: ~
|
||||
|
||||
@@ -4,18 +4,17 @@ extensions._loaded = {}
|
||||
extensions._config = {}
|
||||
extensions._health = {}
|
||||
|
||||
local load_extension = function(name)
|
||||
local ok, ext = pcall(require, "telescope._extensions." .. name)
|
||||
if not ok then
|
||||
error("This extension doesn't exist or is not installed: " .. name .. "\n" .. ext)
|
||||
end
|
||||
return ext
|
||||
end
|
||||
|
||||
extensions.manager = setmetatable({}, {
|
||||
__index = function(t, k)
|
||||
-- See if this extension exists.
|
||||
local ok, ext = pcall(require, "telescope._extensions." .. k)
|
||||
if not ok then
|
||||
error("This extension doesn't exist or is not installed: " .. k .. "\n" .. ext)
|
||||
end
|
||||
|
||||
if ext.setup then
|
||||
ext.setup(extensions._config[k] or {}, require("telescope.config").values)
|
||||
end
|
||||
|
||||
local ext = load_extension(k)
|
||||
t[k] = ext.exports or {}
|
||||
extensions._health[k] = ext.health
|
||||
|
||||
@@ -57,7 +56,10 @@ extensions.register = function(mod)
|
||||
end
|
||||
|
||||
extensions.load = function(name)
|
||||
return extensions.manager[name]
|
||||
local ext = load_extension(name)
|
||||
if ext.setup then
|
||||
ext.setup(extensions._config[name] or {}, require("telescope.config").values)
|
||||
end
|
||||
end
|
||||
|
||||
extensions.set_config = function(extensions_config)
|
||||
|
||||
@@ -93,6 +93,8 @@ function telescope.register_extension(mod)
|
||||
end
|
||||
|
||||
--- Load an extension.
|
||||
--- - Notes:
|
||||
--- - Loading triggers ext setup via the config passed in |telescope.setup|
|
||||
---@param name string: Name of the extension
|
||||
function telescope.load_extension(name)
|
||||
return _extensions.load(name)
|
||||
|
||||
Reference in New Issue
Block a user