diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-01-26 21:34:32 -0500 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-01-26 21:50:37 -0500 |
commit | 5ede2766c8d994f9e299288d46cefdd12ffee47f (patch) | |
tree | 75d8bb3c9a3857ace177402a604aae63d434b51e /src | |
parent | e673a0df1a0391b61a58cf3579754f7abd17e158 (diff) | |
download | rneovim-5ede2766c8d994f9e299288d46cefdd12ffee47f.tar.gz rneovim-5ede2766c8d994f9e299288d46cefdd12ffee47f.tar.bz2 rneovim-5ede2766c8d994f9e299288d46cefdd12ffee47f.zip |
vim-patch:8.2.0158: triggering CompleteDone earlier is not backwards compatible
Problem: Triggering CompleteDone earlier is not backwards compatible.
(Daniel Hahler)
Solution: Add CompleteDonePre instead.
https://github.com/vim/vim/commit/3f169ce17e8b779d105c96138a8b4246f2d270b9
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/auevents.lua | 1 | ||||
-rw-r--r-- | src/nvim/edit.c | 12 | ||||
-rw-r--r-- | src/nvim/testdir/test_ins_complete.vim | 11 |
3 files changed, 15 insertions, 9 deletions
diff --git a/src/nvim/auevents.lua b/src/nvim/auevents.lua index 96e170a9e1..4391d997a7 100644 --- a/src/nvim/auevents.lua +++ b/src/nvim/auevents.lua @@ -31,6 +31,7 @@ return { 'ColorSchemePre', -- before loading a colorscheme 'CompleteChanged', -- after popup menu changed 'CompleteDone', -- after finishing insert complete + 'CompleteDonePre', -- idem, before clearing info 'CursorHold', -- cursor in same position for a while 'CursorHoldI', -- idem, in Insert mode 'CursorMoved', -- cursor was moved diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 9c22f09059..e253905057 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -3594,12 +3594,11 @@ static bool ins_compl_prep(int c) auto_format(FALSE, TRUE); - // Trigger the CompleteDone event to give scripts a chance to - // act upon the completion. Do this before clearing the info, - // and restore ctrl_x_mode, so that complete_info() can be - // used. + // Trigger the CompleteDonePre event to give scripts a chance to + // act upon the completion before clearing the info, and restore + // ctrl_x_mode, so that complete_info() can be used. ctrl_x_mode = prev_mode; - ins_apply_autocmds(EVENT_COMPLETEDONE); + ins_apply_autocmds(EVENT_COMPLETEDONEPRE); ins_compl_free(); compl_started = false; @@ -3625,6 +3624,9 @@ static bool ins_compl_prep(int c) */ if (want_cindent && in_cinkeys(KEY_COMPLETE, ' ', inindent(0))) do_c_expr_indent(); + // Trigger the CompleteDone event to give scripts a chance to act + // upon the end of completion. + ins_apply_autocmds(EVENT_COMPLETEDONE); } } else if (ctrl_x_mode == CTRL_X_LOCAL_MSG) /* Trigger the CompleteDone event to give scripts a chance to act diff --git a/src/nvim/testdir/test_ins_complete.vim b/src/nvim/testdir/test_ins_complete.vim index e6d427db05..f4e6b698c6 100644 --- a/src/nvim/testdir/test_ins_complete.vim +++ b/src/nvim/testdir/test_ins_complete.vim @@ -130,7 +130,7 @@ func s:CompleteDone_CheckCompletedItemNone() let s:called_completedone = 1 endfunc -function! s:CompleteDone_CheckCompletedItemDict() +func s:CompleteDone_CheckCompletedItemDict(pre) call assert_equal( 'aword', v:completed_item[ 'word' ] ) call assert_equal( 'wrd', v:completed_item[ 'abbr' ] ) call assert_equal( 'extra text', v:completed_item[ 'menu' ] ) @@ -138,10 +138,12 @@ function! s:CompleteDone_CheckCompletedItemDict() call assert_equal( 'W', v:completed_item[ 'kind' ] ) call assert_equal( 'test', v:completed_item[ 'user_data' ] ) - call assert_equal('function', complete_info().mode) + if a:pre + call assert_equal('function', complete_info().mode) + endif let s:called_completedone = 1 -endfunction +endfunc func Test_CompleteDoneNone() throw 'skipped: Nvim does not support v:none' @@ -161,7 +163,8 @@ func Test_CompleteDoneNone() endfunc func Test_CompleteDoneDict() - au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemDict() + au CompleteDonePre * :call <SID>CompleteDone_CheckCompletedItemDict(1) + au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemDict(0) set completefunc=<SID>CompleteDone_CompleteFuncDict execute "normal a\<C-X>\<C-U>\<C-Y>" |