aboutsummaryrefslogtreecommitdiff
path: root/test/functional/viml/completion_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/viml/completion_spec.lua')
-rw-r--r--test/functional/viml/completion_spec.lua70
1 files changed, 37 insertions, 33 deletions
diff --git a/test/functional/viml/completion_spec.lua b/test/functional/viml/completion_spec.lua
index 5a37cb8f43..216ccb3744 100644
--- a/test/functional/viml/completion_spec.lua
+++ b/test/functional/viml/completion_spec.lua
@@ -2,11 +2,9 @@ local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
local clear, feed = helpers.clear, helpers.feed
local eval, eq, neq = helpers.eval, helpers.eq, helpers.neq
-local execute, source, expect = helpers.execute, helpers.source, helpers.expect
+local feed_command, source, expect = helpers.feed_command, helpers.source, helpers.expect
local meths = helpers.meths
-if helpers.pending_win32(pending) then return end
-
describe('completion', function()
local screen
@@ -61,38 +59,44 @@ describe('completion', function()
it('returns expected dict in normal completion', function()
feed('ifoo<ESC>o<C-x><C-n>')
eq('foo', eval('getline(2)'))
- eq({word = 'foo', abbr = '', menu = '', info = '', kind = ''},
+ eq({word = 'foo', abbr = '', menu = '',
+ info = '', kind = '', user_data = ''},
eval('v:completed_item'))
end)
it('is readonly', function()
screen:try_resize(80, 8)
feed('ifoo<ESC>o<C-x><C-n><ESC>')
- execute('let v:completed_item.word = "bar"')
+ feed_command('let v:completed_item.word = "bar"')
+ neq(nil, string.find(eval('v:errmsg'), '^E46: '))
+ feed_command('let v:errmsg = ""')
+
+ feed_command('let v:completed_item.abbr = "bar"')
neq(nil, string.find(eval('v:errmsg'), '^E46: '))
- execute('let v:errmsg = ""')
+ feed_command('let v:errmsg = ""')
- execute('let v:completed_item.abbr = "bar"')
+ feed_command('let v:completed_item.menu = "bar"')
neq(nil, string.find(eval('v:errmsg'), '^E46: '))
- execute('let v:errmsg = ""')
+ feed_command('let v:errmsg = ""')
- execute('let v:completed_item.menu = "bar"')
+ feed_command('let v:completed_item.info = "bar"')
neq(nil, string.find(eval('v:errmsg'), '^E46: '))
- execute('let v:errmsg = ""')
+ feed_command('let v:errmsg = ""')
- execute('let v:completed_item.info = "bar"')
+ feed_command('let v:completed_item.kind = "bar"')
neq(nil, string.find(eval('v:errmsg'), '^E46: '))
- execute('let v:errmsg = ""')
+ feed_command('let v:errmsg = ""')
- execute('let v:completed_item.kind = "bar"')
+ feed_command('let v:completed_item.user_data = "bar"')
neq(nil, string.find(eval('v:errmsg'), '^E46: '))
- execute('let v:errmsg = ""')
+ feed_command('let v:errmsg = ""')
end)
it('returns expected dict in omni completion', function()
source([[
function! TestOmni(findstart, base) abort
return a:findstart ? 0 : [{'word': 'foo', 'abbr': 'bar',
\ 'menu': 'baz', 'info': 'foobar', 'kind': 'foobaz'},
- \ {'word': 'word', 'abbr': 'abbr', 'menu': 'menu', 'info': 'info', 'kind': 'kind'}]
+ \ {'word': 'word', 'abbr': 'abbr', 'menu': 'menu',
+ \ 'info': 'info', 'kind': 'kind'}]
endfunction
setlocal omnifunc=TestOmni
]])
@@ -109,7 +113,7 @@ describe('completion', function()
{3:-- Omni completion (^O^N^P) }{4:match 1 of 2} |
]])
eq({word = 'foo', abbr = 'bar', menu = 'baz',
- info = 'foobar', kind = 'foobaz'},
+ info = 'foobar', kind = 'foobaz', user_data = ''},
eval('v:completed_item'))
end)
end)
@@ -125,7 +129,7 @@ describe('completion', function()
end)
it('inserts the first candidate if default', function()
- execute('set completeopt+=menuone')
+ feed_command('set completeopt+=menuone')
feed('ifoo<ESC>o')
screen:expect([[
foo |
@@ -176,7 +180,7 @@ describe('completion', function()
eq('foo', eval('getline(3)'))
end)
it('selects the first candidate if noinsert', function()
- execute('set completeopt+=menuone,noinsert')
+ feed_command('set completeopt+=menuone,noinsert')
feed('ifoo<ESC>o<C-x><C-n>')
screen:expect([[
foo |
@@ -216,7 +220,7 @@ describe('completion', function()
eq('foo', eval('getline(3)'))
end)
it('does not insert the first candidate if noselect', function()
- execute('set completeopt+=menuone,noselect')
+ feed_command('set completeopt+=menuone,noselect')
feed('ifoo<ESC>o<C-x><C-n>')
screen:expect([[
foo |
@@ -256,7 +260,7 @@ describe('completion', function()
eq('bar', eval('getline(3)'))
end)
it('does not select/insert the first candidate if noselect and noinsert', function()
- execute('set completeopt+=menuone,noselect,noinsert')
+ feed_command('set completeopt+=menuone,noselect,noinsert')
feed('ifoo<ESC>o<C-x><C-n>')
screen:expect([[
foo |
@@ -305,14 +309,14 @@ describe('completion', function()
eq('', eval('getline(3)'))
end)
it('does not change modified state if noinsert', function()
- execute('set completeopt+=menuone,noinsert')
- execute('setlocal nomodified')
+ feed_command('set completeopt+=menuone,noinsert')
+ feed_command('setlocal nomodified')
feed('i<C-r>=TestComplete()<CR><ESC>')
eq(0, eval('&l:modified'))
end)
it('does not change modified state if noselect', function()
- execute('set completeopt+=menuone,noselect')
- execute('setlocal nomodified')
+ feed_command('set completeopt+=menuone,noselect')
+ feed_command('setlocal nomodified')
feed('i<C-r>=TestComplete()<CR><ESC>')
eq(0, eval('&l:modified'))
end)
@@ -326,8 +330,8 @@ describe('completion', function()
return ''
endfunction
]])
- execute('set completeopt+=noselect,noinsert')
- execute('inoremap <right> <c-r>=TestComplete()<cr>')
+ feed_command('set completeopt+=noselect,noinsert')
+ feed_command('inoremap <right> <c-r>=TestComplete()<cr>')
end)
local tests = {
@@ -541,7 +545,7 @@ describe('completion', function()
return ''
endfunction
]])
- execute("set completeopt=menuone,noselect")
+ feed_command("set completeopt=menuone,noselect")
end)
it("works", function()
@@ -707,7 +711,7 @@ describe('completion', function()
it('disables folding during completion', function ()
- execute("set foldmethod=indent")
+ feed_command("set foldmethod=indent")
feed('i<Tab>foo<CR><Tab>bar<Esc>gg')
screen:expect([[
^foo |
@@ -734,7 +738,7 @@ describe('completion', function()
end)
it('popupmenu is not interrupted by events', function ()
- execute("set complete=.")
+ feed_command("set complete=.")
feed('ifoobar fooegg<cr>f<c-p>')
screen:expect([[
@@ -852,8 +856,8 @@ describe('completion', function()
end)
it("'ignorecase' 'infercase' CTRL-X CTRL-N #6451", function()
- execute('set ignorecase infercase')
- execute('edit BACKERS.md')
+ feed_command('set ignorecase infercase')
+ feed_command('edit BACKERS.md')
feed('oX<C-X><C-N>')
screen:expect([[
# Bountysource Backers |
@@ -868,13 +872,13 @@ describe('completion', function()
end)
end)
-describe('External completion popupmenu', function()
+describe('ui/ext_popupmenu', function()
local screen
local items, selected, anchor
before_each(function()
clear()
screen = Screen.new(60, 8)
- screen:attach({rgb=true, popupmenu_external=true})
+ screen:attach({rgb=true, ext_popupmenu=true})
screen:set_default_attr_ids({
[1] = {bold=true, foreground=Screen.colors.Blue},
[2] = {bold = true},