feat(lua): omnifunc for builting lua interpreter

also make implicit submodules "uri" and "_inspector" work with completion

this is needed for `:lua=vim.uri_<tab>` wildmenu completion
to work even before uri or _inspector functions are used.
This commit is contained in:
Björn Linse
2021-01-27 09:00:28 +01:00
committed by bfredl
parent ed05d38d9f
commit 79571b92ce
6 changed files with 79 additions and 6 deletions

View File

@@ -5,7 +5,7 @@ local eq = helpers.eq
local exec_lua = helpers.exec_lua
local get_completions = function(input, env)
return exec_lua("return {vim._expand_pat(...)}", '^' .. input, env)
return exec_lua("return {vim._expand_pat(...)}", input, env)
end
local get_compl_parts = function(parts)
@@ -107,9 +107,12 @@ describe('nlua_expand_pat', function()
end)
it('should work with lazy submodules of "vim" global', function()
eq({{ 'inspect' }, 4 },
eq({{ 'inspect', 'inspect_pos' }, 4 },
get_completions('vim.inspec'))
eq({{ 'treesitter' }, 4 },
get_completions('vim.treesi'))
eq({{ 'set' }, 11 },
get_completions('vim.keymap.se'))
end)

View File

@@ -2900,6 +2900,29 @@ describe('lua stdlib', function()
end)
end)
it('vim.lua_omnifunc', function()
local screen = Screen.new(60,5)
screen:set_default_attr_ids {
[1] = {foreground = Screen.colors.Blue1, bold = true};
[2] = {background = Screen.colors.WebGray};
[3] = {background = Screen.colors.LightMagenta};
[4] = {bold = true};
[5] = {foreground = Screen.colors.SeaGreen, bold = true};
}
screen:attach()
command [[ set omnifunc=v:lua.vim.lua_omnifunc ]]
-- Note: the implementation is shared with lua command line completion.
-- More tests for completion in lua/command_line_completion_spec.lua
feed [[ivim.insp<c-x><c-o>]]
screen:expect{grid=[[
vim.inspect^ |
{1:~ }{2: inspect }{1: }|
{1:~ }{3: inspect_pos }{1: }|
{1:~ }|
{4:-- Omni completion (^O^N^P) }{5:match 1 of 2} |
]]}
end)
end)
describe('lua: builtin modules', function()