aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/_init_packages.lua
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2022-03-07 11:01:50 +0100
committerGitHub <noreply@github.com>2022-03-07 11:01:50 +0100
commitc3cc17f0e61d70436c601444298fceeafbfbacb3 (patch)
tree2c76e5a9cdc0f76f4462c9ef56fe7a20af1c27db /runtime/lua/vim/_init_packages.lua
parent5f3fff62a8d6b7a9e1b693f4e4a99e3c2d90789c (diff)
parentf39a12d629500bdbacb389ed593adac34d058fcb (diff)
downloadrneovim-c3cc17f0e61d70436c601444298fceeafbfbacb3.tar.gz
rneovim-c3cc17f0e61d70436c601444298fceeafbfbacb3.tar.bz2
rneovim-c3cc17f0e61d70436c601444298fceeafbfbacb3.zip
Merge pull request #17621 from bfredl/luaindex
refactor(lua): make vim submodule lazy loading declarative
Diffstat (limited to 'runtime/lua/vim/_init_packages.lua')
-rw-r--r--runtime/lua/vim/_init_packages.lua20
1 files changed, 19 insertions, 1 deletions
diff --git a/runtime/lua/vim/_init_packages.lua b/runtime/lua/vim/_init_packages.lua
index dcb402287c..7d27741f1b 100644
--- a/runtime/lua/vim/_init_packages.lua
+++ b/runtime/lua/vim/_init_packages.lua
@@ -50,7 +50,25 @@ table.insert(package.loaders, 2, vim._load_package)
-- builtin functions which always should be available
require'vim.shared'
-vim.inspect = require'vim.inspect'
+
+vim._submodules = {inspect=true}
+
+-- These are for loading runtime modules in the vim namespace lazily.
+setmetatable(vim, {
+ __index = function(t, key)
+ if vim._submodules[key] then
+ t[key] = require('vim.'..key)
+ return t[key]
+ elseif vim.startswith(key, 'uri_') then
+ local val = require('vim.uri')[key]
+ if val ~= nil then
+ -- Expose all `vim.uri` functions on the `vim` module.
+ t[key] = val
+ return t[key]
+ end
+ end
+ end
+})
--- <Docs described in |vim.empty_dict()| >
---@private