diff options
author | LostNeophyte <[email protected]> | 2023-01-19 13:43:52 +0100 |
---|---|---|
committer | opalmay <[email protected]> | 2023-01-20 23:52:10 +0200 |
commit | b90c9ee7b78a4311a43e5690876413371f7368d7 (patch) | |
tree | ff6cfa84a489799e36cf94a9ffdc1e8fe5d11cec /lua/lvim/utils/modules.lua | |
parent | 83f9271047d61e62b70b93ab99d2c8d37f7eab04 (diff) |
move lazy utils to modules.lua
Diffstat (limited to 'lua/lvim/utils/modules.lua')
-rw-r--r-- | lua/lvim/utils/modules.lua | 55 |
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 |