forked from aniani/vim
patch 9.1.0463: no fuzzy-matching support for insert-completion
Problem: no fuzzy-matching support for insert-completion
Solution: enable insert-mode completion with fuzzy-matching
using :set completopt+=fuzzy (glepnir).
closes: #14878
Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
734286e4c6
commit
a218cc6cda
@@ -2451,4 +2451,60 @@ func Test_completefunc_first_call_complete_add()
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_complete_fuzzy_match()
|
||||
func OnPumChange()
|
||||
let g:item = get(v:event, 'completed_item', {})
|
||||
let g:word = get(g:item, 'word', v:null)
|
||||
endfunction
|
||||
|
||||
augroup AAAAA_Group
|
||||
au!
|
||||
autocmd CompleteChanged * :call OnPumChange()
|
||||
augroup END
|
||||
|
||||
func Omni_test(findstart, base)
|
||||
if a:findstart
|
||||
return col(".")
|
||||
endif
|
||||
return [#{word: "foo"}, #{word: "foobar"}, #{word: "fooBaz"}, #{word: "foobala"}]
|
||||
endfunc
|
||||
new
|
||||
set omnifunc=Omni_test
|
||||
set completeopt+=noinsert,fuzzy
|
||||
call feedkeys("Gi\<C-x>\<C-o>", 'tx')
|
||||
call assert_equal('foo', g:word)
|
||||
call feedkeys("S\<C-x>\<C-o>fb", 'tx')
|
||||
call assert_equal('fooBaz', g:word)
|
||||
call feedkeys("S\<C-x>\<C-o>fa", 'tx')
|
||||
call assert_equal('foobar', g:word)
|
||||
" select next
|
||||
call feedkeys("S\<C-x>\<C-o>fb\<C-n>", 'tx')
|
||||
call assert_equal('foobar', g:word)
|
||||
" can circly select next
|
||||
call feedkeys("S\<C-x>\<C-o>fb\<C-n>\<C-n>\<C-n>", 'tx')
|
||||
call assert_equal(v:null, g:word)
|
||||
" select prev
|
||||
call feedkeys("S\<C-x>\<C-o>fb\<C-p>", 'tx')
|
||||
call assert_equal(v:null, g:word)
|
||||
" can circly select prev
|
||||
call feedkeys("S\<C-x>\<C-o>fb\<C-p>\<C-p>\<C-p>\<C-p>", 'tx')
|
||||
call assert_equal('fooBaz', g:word)
|
||||
|
||||
" respect noselect
|
||||
set completeopt+=noselect
|
||||
call feedkeys("S\<C-x>\<C-o>fb", 'tx')
|
||||
call assert_equal(v:null, g:word)
|
||||
call feedkeys("S\<C-x>\<C-o>fb\<C-n>", 'tx')
|
||||
call assert_equal('fooBaz', g:word)
|
||||
|
||||
" clean up
|
||||
set omnifunc=
|
||||
bw!
|
||||
set complete& completeopt&
|
||||
autocmd! AAAAA_Group
|
||||
augroup! AAAAA_Group
|
||||
delfunc OnPumChange
|
||||
delfunc Omni_test
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab nofoldenable
|
||||
|
||||
Reference in New Issue
Block a user