diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-01-17 22:06:44 -0500 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-01-17 23:09:32 -0500 |
commit | 9a9bb9186a9f1596b1b501719b495a536065a4f3 (patch) | |
tree | 2bec3ccd681751249236897a7be0742bf8577e4f /src | |
parent | a7aa1fc87da0bd66b64afc39b5d6bf7c4c129986 (diff) | |
download | rneovim-9a9bb9186a9f1596b1b501719b495a536065a4f3.tar.gz rneovim-9a9bb9186a9f1596b1b501719b495a536065a4f3.tar.bz2 rneovim-9a9bb9186a9f1596b1b501719b495a536065a4f3.zip |
vim-patch:8.1.0716: get warning message when 'completefunc' returns nothing
Problem: Get warning message when 'completefunc' returns nothing.
Solution: Allow for returning v:none to suppress the warning message.
(Yasuhiro Matsumoto, closes vim/vim#3789)
https://github.com/vim/vim/commit/cee9bc2e3dc5c16a9d2a8d0e23aa0d5fdefa3a4a
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/edit.c | 4 | ||||
-rw-r--r-- | src/nvim/testdir/test_ins_complete.vim | 61 |
2 files changed, 47 insertions, 18 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index cdb4b127da..9bc00cf2aa 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -3747,6 +3747,8 @@ expand_by_function( case VAR_DICT: matchdict = rettv.vval.v_dict; break; + case VAR_SPECIAL: + FALLTHROUGH; default: // TODO(brammool): Give error message? tv_clear(&rettv); @@ -5210,7 +5212,7 @@ static int ins_complete(int c, bool enable_pum) } } - /* Show a message about what (completion) mode we're in. */ + // Show a message about what (completion) mode we're in. showmode(); if (!shortmess(SHM_COMPLETIONMENU)) { if (edit_submode_extra != NULL) { diff --git a/src/nvim/testdir/test_ins_complete.vim b/src/nvim/testdir/test_ins_complete.vim index 52ec281d82..e77afb7a55 100644 --- a/src/nvim/testdir/test_ins_complete.vim +++ b/src/nvim/testdir/test_ins_complete.vim @@ -98,6 +98,15 @@ func Test_ins_complete() call delete('Xdir', 'rf') endfunc +func s:CompleteDone_CompleteFuncNone( findstart, base ) + throw 'skipped: Nvim does not support v:none' + if a:findstart + return 0 + endif + + return v:none +endfunc + function! s:CompleteDone_CompleteFuncDict( findstart, base ) if a:findstart return 0 @@ -117,6 +126,10 @@ function! s:CompleteDone_CompleteFuncDict( findstart, base ) \ } endfunction +func s:CompleteDone_CheckCompletedItemNone() + let s:called_completedone = 1 +endfunc + function! s:CompleteDone_CheckCompletedItemDict() call assert_equal( 'aword', v:completed_item[ 'word' ] ) call assert_equal( 'wrd', v:completed_item[ 'abbr' ] ) @@ -128,15 +141,29 @@ function! s:CompleteDone_CheckCompletedItemDict() let s:called_completedone = 1 endfunction -function Test_CompleteDoneDict() +func Test_CompleteDoneNone() + throw 'skipped: Nvim does not support v:none' + au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemNone() + + set completefunc=<SID>CompleteDone_CompleteFuncNone + execute "normal a\<C-X>\<C-U>\<C-Y>" + set completefunc& + + call assert_true(s:called_completedone) + + let s:called_completedone = 0 + au! CompleteDone +endfunc + +func Test_CompleteDoneDict() au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemDict() set completefunc=<SID>CompleteDone_CompleteFuncDict execute "normal a\<C-X>\<C-U>\<C-Y>" set completefunc& - call assert_equal( 'test', v:completed_item[ 'user_data' ] ) - call assert_true( s:called_completedone ) + call assert_equal('test', v:completed_item[ 'user_data' ]) + call assert_true(s:called_completedone) let s:called_completedone = 0 au! CompleteDone @@ -155,7 +182,7 @@ func Test_CompleteDone_undo() au! CompleteDone endfunc -function! s:CompleteDone_CompleteFuncDictNoUserData( findstart, base ) +func s:CompleteDone_CompleteFuncDictNoUserData(findstart, base) if a:findstart return 0 endif @@ -171,9 +198,9 @@ function! s:CompleteDone_CompleteFuncDictNoUserData( findstart, base ) \ } \ ] \ } -endfunction +endfunc -function! s:CompleteDone_CheckCompletedItemDictNoUserData() +func s:CompleteDone_CheckCompletedItemDictNoUserData() 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' ] ) @@ -182,31 +209,31 @@ function! s:CompleteDone_CheckCompletedItemDictNoUserData() call assert_equal( '', v:completed_item[ 'user_data' ] ) let s:called_completedone = 1 -endfunction +endfunc -function Test_CompleteDoneDictNoUserData() +func Test_CompleteDoneDictNoUserData() au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemDictNoUserData() set completefunc=<SID>CompleteDone_CompleteFuncDictNoUserData execute "normal a\<C-X>\<C-U>\<C-Y>" set completefunc& - call assert_equal( '', v:completed_item[ 'user_data' ] ) - call assert_true( s:called_completedone ) + call assert_equal('', v:completed_item[ 'user_data' ]) + call assert_true(s:called_completedone) let s:called_completedone = 0 au! CompleteDone endfunc -function! s:CompleteDone_CompleteFuncList( findstart, base ) +func s:CompleteDone_CompleteFuncList(findstart, base) if a:findstart return 0 endif return [ 'aword' ] -endfunction +endfunc -function! s:CompleteDone_CheckCompletedItemList() +func s:CompleteDone_CheckCompletedItemList() call assert_equal( 'aword', v:completed_item[ 'word' ] ) call assert_equal( '', v:completed_item[ 'abbr' ] ) call assert_equal( '', v:completed_item[ 'menu' ] ) @@ -215,17 +242,17 @@ function! s:CompleteDone_CheckCompletedItemList() call assert_equal( '', v:completed_item[ 'user_data' ] ) let s:called_completedone = 1 -endfunction +endfunc -function Test_CompleteDoneList() +func Test_CompleteDoneList() au CompleteDone * :call <SID>CompleteDone_CheckCompletedItemList() set completefunc=<SID>CompleteDone_CompleteFuncList execute "normal a\<C-X>\<C-U>\<C-Y>" set completefunc& - call assert_equal( '', v:completed_item[ 'user_data' ] ) - call assert_true( s:called_completedone ) + call assert_equal('', v:completed_item[ 'user_data' ]) + call assert_true(s:called_completedone) let s:called_completedone = 0 au! CompleteDone |