aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2022-03-09 14:26:01 +0100
committerbfredl <bjorn.linse@gmail.com>2022-03-09 15:25:06 +0100
commit5ed60804fe69e97a699ca64422f4f7f4cc20f3da (patch)
treeb01987a6afd391d65266d56865b6bba97d3e7479
parent2783f4cc4a410cd3b73e8cdfbdf8c859c426c6c6 (diff)
downloadrneovim-5ed60804fe69e97a699ca64422f4f7f4cc20f3da.tar.gz
rneovim-5ed60804fe69e97a699ca64422f4f7f4cc20f3da.tar.bz2
rneovim-5ed60804fe69e97a699ca64422f4f7f4cc20f3da.zip
feat(lua): handle lazy submodules in `:lua vim.` wildmenu completion
-rw-r--r--runtime/lua/vim/_editor.lua5
-rw-r--r--test/functional/lua/command_line_completion_spec.lua8
2 files changed, 13 insertions, 0 deletions
diff --git a/runtime/lua/vim/_editor.lua b/runtime/lua/vim/_editor.lua
index 2251aca004..3136e36043 100644
--- a/runtime/lua/vim/_editor.lua
+++ b/runtime/lua/vim/_editor.lua
@@ -519,6 +519,8 @@ function vim._expand_pat(pat, env)
local mt = getmetatable(final_env)
if mt and type(mt.__index) == "table" then
field = rawget(mt.__index, key)
+ elseif final_env == vim and vim._submodules[key] then
+ field = vim[key]
end
end
final_env = field
@@ -545,6 +547,9 @@ function vim._expand_pat(pat, env)
if mt and type(mt.__index) == "table" then
insert_keys(mt.__index)
end
+ if final_env == vim then
+ insert_keys(vim._submodules)
+ end
table.sort(keys)
diff --git a/test/functional/lua/command_line_completion_spec.lua b/test/functional/lua/command_line_completion_spec.lua
index 3ba7e1589f..3a5966755e 100644
--- a/test/functional/lua/command_line_completion_spec.lua
+++ b/test/functional/lua/command_line_completion_spec.lua
@@ -106,6 +106,14 @@ describe('nlua_expand_pat', function()
)
end)
+ it('should work with lazy submodules of "vim" global', function()
+ eq({{ 'inspect' }, 4 },
+ get_completions('vim.inspec'))
+
+ eq({{ 'set' }, 11 },
+ get_completions('vim.keymap.se'))
+ end)
+
it('should be able to interpolate globals', function()
eq(
{{