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()*
|
telescope.load_extension({name}) *telescope.load_extension()*
|
||||||
Load an extension.
|
Load an extension.
|
||||||
|
- Notes:
|
||||||
|
- Loading triggers ext setup via the config passed in |telescope.setup|
|
||||||
|
|
||||||
|
|
||||||
Parameters: ~
|
Parameters: ~
|
||||||
|
|||||||
@@ -4,18 +4,17 @@ extensions._loaded = {}
|
|||||||
extensions._config = {}
|
extensions._config = {}
|
||||||
extensions._health = {}
|
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({}, {
|
extensions.manager = setmetatable({}, {
|
||||||
__index = function(t, k)
|
__index = function(t, k)
|
||||||
-- See if this extension exists.
|
local ext = load_extension(k)
|
||||||
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
|
|
||||||
|
|
||||||
t[k] = ext.exports or {}
|
t[k] = ext.exports or {}
|
||||||
extensions._health[k] = ext.health
|
extensions._health[k] = ext.health
|
||||||
|
|
||||||
@@ -57,7 +56,10 @@ extensions.register = function(mod)
|
|||||||
end
|
end
|
||||||
|
|
||||||
extensions.load = function(name)
|
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
|
end
|
||||||
|
|
||||||
extensions.set_config = function(extensions_config)
|
extensions.set_config = function(extensions_config)
|
||||||
|
|||||||
@@ -93,6 +93,8 @@ function telescope.register_extension(mod)
|
|||||||
end
|
end
|
||||||
|
|
||||||
--- Load an extension.
|
--- Load an extension.
|
||||||
|
--- - Notes:
|
||||||
|
--- - Loading triggers ext setup via the config passed in |telescope.setup|
|
||||||
---@param name string: Name of the extension
|
---@param name string: Name of the extension
|
||||||
function telescope.load_extension(name)
|
function telescope.load_extension(name)
|
||||||
return _extensions.load(name)
|
return _extensions.load(name)
|
||||||
|
|||||||
Reference in New Issue
Block a user