summaryrefslogtreecommitdiff
path: root/lua/lvim/utils.lua
diff options
context:
space:
mode:
authorLostNeophyte <[email protected]>2023-01-18 14:21:31 +0100
committeropalmay <[email protected]>2023-01-20 23:52:10 +0200
commit74bd5e16aa2a9dc4bd751618982fcd6cfba3a036 (patch)
treeac67ecf269cbfb93a008a6279b93a212a334b618 /lua/lvim/utils.lua
parent2d3140f0d7497cc8352190b2fd4737a7a3420a68 (diff)
perf: lazy load most plugins
Diffstat (limited to 'lua/lvim/utils.lua')
-rw-r--r--lua/lvim/utils.lua55
1 files changed, 55 insertions, 0 deletions
diff --git a/lua/lvim/utils.lua b/lua/lvim/utils.lua
index 5e49906a..63831fe5 100644
--- a/lua/lvim/utils.lua
+++ b/lua/lvim/utils.lua
@@ -129,4 +129,59 @@ function M.fs_copy(source, destination)
end
end
+-- code from <https://github.com/tjdevries/lazy-require.nvim/blob/bb626818ebc175b8c595846925fd96902b1ce02b/lua/lazy-require.lua#L25>
+function M.require_on_index(require_path)
+ return setmetatable({}, {
+ __index = function(_, key)
+ return require(require_path)[key]
+ end,
+
+ __newindex = function(_, key, value)
+ require(require_path)[key] = value
+ end,
+ })
+end
+
+-- code from <https://github.com/tjdevries/lazy-require.nvim/blob/bb626818ebc175b8c595846925fd96902b1ce02b/lua/lazy-require.lua#L25>
+function M.require_on_exported_call(require_path)
+ return setmetatable({}, {
+ __index = function(_, k)
+ return function(...)
+ return require(require_path)[k](...)
+ end
+ end,
+ })
+end
+
+function M.lazy_set(require_path, fn_name)
+ local function poputale_table(table)
+ setmetatable(table, {})
+ local source = require(require_path)[fn_name]()
+ for k, v in pairs(source) do
+ table[k] = v
+ end
+ end
+ return setmetatable({}, {
+ __index = function(me, index)
+ poputale_table(me)
+ return me[index]
+ end,
+
+ __newindex = function(me, key, value)
+ poputale_table(me)
+ me[key] = value
+ end,
+
+ __pairs = function(me)
+ poputale_table(me)
+ return pairs(me)
+ end,
+
+ __ipairs = function(me)
+ poputale_table(me)
+ return pairs(me)
+ end,
+ })
+end
+
return M