From b90c9ee7b78a4311a43e5690876413371f7368d7 Mon Sep 17 00:00:00 2001 From: LostNeophyte Date: Thu, 19 Jan 2023 13:43:52 +0100 Subject: move lazy utils to modules.lua --- lua/lvim/utils/modules.lua | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'lua/lvim/utils/modules.lua') 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 +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 +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 -- cgit v1.2.3