local load_pack = function(plugin_name) vim.validate('plugin_name', plugin_name, 'string') vim.cmd.packadd { plugin_name, bang = vim.v.vim_did_init == 0 } return require(plugin_name) end return setmetatable( { defer = function(plugin_name) return vim.schedule_wrap(function(f) f(load_pack(plugin_name)) end) end, }, { __call = function(_, plugin_name) return load_pack(plugin_name) end, } )