mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
a616272f56
Problem: `CompleteDone` currently does not specify the reason for why completion was done, which is problematic for completion plugins as they cannot know whether the event was triggered due to the completion being canceled, accepted, or for some other reason. Solution: Add a `reason` key to `v:event`, which is set by `CompleteDone` to indicate why completion ended.
42 lines
1.0 KiB
Lua
42 lines
1.0 KiB
Lua
local t = require('test.testutil')
|
|
local n = require('test.functional.testnvim')()
|
|
|
|
local clear = n.clear
|
|
local command = n.command
|
|
local call = n.call
|
|
local feed = n.feed
|
|
local eval = n.eval
|
|
local eq = t.eq
|
|
|
|
describe('CompleteDone', function()
|
|
before_each(clear)
|
|
|
|
describe('sets v:event.reason', function()
|
|
before_each(function()
|
|
clear()
|
|
command('autocmd CompleteDone * let g:donereason = v:event.reason')
|
|
feed('i')
|
|
call('complete', call('col', '.'), { 'foo', 'bar' })
|
|
end)
|
|
|
|
it('accept', function()
|
|
feed('<C-y>')
|
|
eq('accept', eval('g:donereason'))
|
|
end)
|
|
describe('cancel', function()
|
|
it('on <C-e>', function()
|
|
feed('<C-e>')
|
|
eq('cancel', eval('g:donereason'))
|
|
end)
|
|
it('on non-keyword character', function()
|
|
feed('<Esc>')
|
|
eq('cancel', eval('g:donereason'))
|
|
end)
|
|
it('when overriden by another complete()', function()
|
|
call('complete', call('col', '.'), { 'bar', 'baz' })
|
|
eq('cancel', eval('g:donereason'))
|
|
end)
|
|
end)
|
|
end)
|
|
end)
|