From 74bd5e16aa2a9dc4bd751618982fcd6cfba3a036 Mon Sep 17 00:00:00 2001 From: LostNeophyte Date: Wed, 18 Jan 2023 14:21:31 +0100 Subject: perf: lazy load most plugins --- lua/lvim/utils.lua | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'lua/lvim/utils.lua') 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 +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