diff options
author | Shougo Matsushita <Shougo.Matsu@gmail.com> | 2015-05-02 09:19:19 +0900 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2015-05-24 17:05:12 -0400 |
commit | d9f97e3026983863d70cbae670bf8277143c8434 (patch) | |
tree | 3634f90a5fc71d0376b6687cdb027aa458fe287a /test/functional/viml/completion_spec.lua | |
parent | 8ef5a61dd6bcaa24d26e450041bcba821fa3dbc7 (diff) | |
download | rneovim-d9f97e3026983863d70cbae670bf8277143c8434.tar.gz rneovim-d9f97e3026983863d70cbae670bf8277143c8434.tar.bz2 rneovim-d9f97e3026983863d70cbae670bf8277143c8434.zip |
completion: Add v:completed_item feature #2563
Reviewed-by: Michael Reed <m.reed@mykolab.com>
Reviewed-by: Luke Andrew <luke.github@la.id.au>
Reviewed-by: Justin M. Keyes <justinkz@gmail.com>
Reviewed-by: Florian Walch <florian@fwalch.com>
Diffstat (limited to 'test/functional/viml/completion_spec.lua')
-rw-r--r-- | test/functional/viml/completion_spec.lua | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/functional/viml/completion_spec.lua b/test/functional/viml/completion_spec.lua new file mode 100644 index 0000000000..df4018e707 --- /dev/null +++ b/test/functional/viml/completion_spec.lua @@ -0,0 +1,56 @@ +local helpers = require('test.functional.helpers') +local clear, feed, execute = helpers.clear, helpers.feed, helpers.execute +local eval, eq, neq = helpers.eval, helpers.eq, helpers.neq +local execute, source = helpers.execute, helpers.source + +describe("completion", function() + before_each(function() + clear() + end) + + describe("v:completed_item", function() + it('returns expected dict in normal completion', function() + feed('ifoo<ESC>o<C-x><C-n><ESC>') + eq('foo', eval('getline(2)')) + eq({word = 'foo', abbr = '', menu = '', info = '', kind = ''}, + eval('v:completed_item')) + end) + it('is readonly', function() + feed('ifoo<ESC>o<C-x><C-n><ESC>') + + execute('let v:completed_item.word = "bar"') + neq(nil, string.find(eval('v:errmsg'), '^E46: ')) + execute('let v:errmsg = ""') + + execute('let v:completed_item.abbr = "bar"') + neq(nil, string.find(eval('v:errmsg'), '^E46: ')) + execute('let v:errmsg = ""') + + execute('let v:completed_item.menu = "bar"') + neq(nil, string.find(eval('v:errmsg'), '^E46: ')) + execute('let v:errmsg = ""') + + execute('let v:completed_item.info = "bar"') + neq(nil, string.find(eval('v:errmsg'), '^E46: ')) + execute('let v:errmsg = ""') + + execute('let v:completed_item.kind = "bar"') + neq(nil, string.find(eval('v:errmsg'), '^E46: ')) + execute('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'}] + endfunction + setlocal omnifunc=TestOmni + ]]) + feed('i<C-x><C-o><ESC>') + eq('foo', eval('getline(1)')) + eq({word = 'foo', abbr = 'bar', menu = 'baz', + info = 'foobar', kind = 'foobaz'}, + eval('v:completed_item')) + end) + end) +end) |