summaryrefslogtreecommitdiff
path: root/lua/lvim/utils
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lvim/utils')
-rw-r--r--lua/lvim/utils/modules.lua55
1 files changed, 55 insertions, 0 deletions
diff --git a/lua/lvim/utils/modules.lua b/lua/lvim/utils/modules.lua
index d5674483..41b2b381 100644
--- a/lua/lvim/utils/modules.lua
+++ b/lua/lvim/utils/modules.lua
@@ -95,4 +95,59 @@ M.reload = function(mod)
return old
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