fix: too early setup on initial extension access (#1601)

This commit is contained in:
fdschmidt93
2021-12-27 17:55:43 +01:00
committed by GitHub
parent 88437804e1
commit 3dafcb419b
3 changed files with 17 additions and 11 deletions

View File

@@ -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: ~

View File

@@ -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)

View File

@@ -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)