diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2016-08-29 11:00:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-29 11:00:24 +0200 |
commit | 0b5a7e4ad5eee229c7aca70b99f8b6f189d289d1 (patch) | |
tree | 4e7959e315e40a34cb3fbdc26f23e5b8c8112971 /test/functional/viml/completion_spec.lua | |
parent | 97c6d80ca7364d571ade073a7fb498b180b54dd3 (diff) | |
parent | 8d6e3f2b88469a3af596cad5f3adf667d16cf8a2 (diff) | |
download | rneovim-0b5a7e4ad5eee229c7aca70b99f8b6f189d289d1.tar.gz rneovim-0b5a7e4ad5eee229c7aca70b99f8b6f189d289d1.tar.bz2 rneovim-0b5a7e4ad5eee229c7aca70b99f8b6f189d289d1.zip |
Merge pull request #4432 from bfredl/pum_ui
allow external UI:s to render the popupmenu
Diffstat (limited to 'test/functional/viml/completion_spec.lua')
-rw-r--r-- | test/functional/viml/completion_spec.lua | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/test/functional/viml/completion_spec.lua b/test/functional/viml/completion_spec.lua index 07544a91ab..5de3bb5da7 100644 --- a/test/functional/viml/completion_spec.lua +++ b/test/functional/viml/completion_spec.lua @@ -755,4 +755,106 @@ describe('completion', function() ]]) end) end) + +end) + +describe('External completion 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:set_default_attr_ids({ + [1] = {bold=true, foreground=Screen.colors.Blue}, + [2] = {bold = true}, + }) + screen:set_on_event_handler(function(name, data) + if name == "popupmenu_show" then + local row, col + items, selected, row, col = unpack(data) + anchor = {row, col} + elseif name == "popupmenu_select" then + selected = data[1] + elseif name == "popupmenu_hide" then + items = nil + end + end) + end) + + it('works', function() + source([[ + function! TestComplete() abort + call complete(1, ['foo', 'bar', 'spam']) + return '' + endfunction + ]]) + local expected = { + {'foo', '', '', ''}, + {'bar', '', '', ''}, + {'spam', '', '', ''}, + } + feed('o<C-r>=TestComplete()<CR>') + screen:expect([[ + | + foo^ | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {2:-- INSERT --} | + ]], nil, nil, function() + eq(expected, items) + eq(0, selected) + eq({1,0}, anchor) + end) + + feed('<c-p>') + screen:expect([[ + | + ^ | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {2:-- INSERT --} | + ]], nil, nil, function() + eq(expected, items) + eq(-1, selected) + eq({1,0}, anchor) + end) + + -- down moves the selection in the menu, but does not insert anything + feed('<down><down>') + screen:expect([[ + | + ^ | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {2:-- INSERT --} | + ]], nil, nil, function() + eq(expected, items) + eq(1, selected) + eq({1,0}, anchor) + end) + + feed('<cr>') + screen:expect([[ + | + bar^ | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {2:-- INSERT --} | + ]], nil, nil, function() + eq(nil, items) -- popupmenu was hidden + end) + end) end) |