aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2022-03-10 15:46:18 +0100
committerGitHub <noreply@github.com>2022-03-10 15:46:18 +0100
commit6170574d2faae4e30f49098e4947075bb0bdd3b5 (patch)
tree3d1ec8f9d5d72f7940bc4b2a4b06e9cd4a3ac825
parent3a32aa96159ae1fdd0efd55389a4b1c2f92c98f7 (diff)
parent5ed60804fe69e97a699ca64422f4f7f4cc20f3da (diff)
downloadrneovim-6170574d2faae4e30f49098e4947075bb0bdd3b5.tar.gz
rneovim-6170574d2faae4e30f49098e4947075bb0bdd3b5.tar.bz2
rneovim-6170574d2faae4e30f49098e4947075bb0bdd3b5.zip
Merge pull request #17660 from bfredl/luacomplete
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(
{{