let s:config_json =<< trim JSON { "sources": ["around", "skkeleton"], "keywordPattern": "[ァ-ヮア-ンー]+", "sourceOptions": { "skkeleton": { "matchers": ["skkeleton"], "sorters": [], "isVolatile": true } }, "autoCompleteEvents": [], "ui": "pum" } JSON let s:config = json_decode(join(s:config_json, '')) function! s:ddc_init() abort call ddc#custom#patch_global('ui', 'pum') call ddc#custom#patch_global(s:config) call ddc#enable() endfunction if !exists('g:skk_ddc_alternative') echoerr 'g:skk_ddc_alternative is required' endif function! s:skkeleton_enable() abort call ddc#custom#patch_buffer({ \ 'autoCompleteEvents': ['InsertEnter', 'TextChangedI', 'TextChangedP'], \ }) inoremap call pum#map#insert_relative(+1) inoremap call pum#map#insert_relative(-1) inoremap call pum#map#insert_relative(+1) inoremap call pum#map#insert_relative(-1) inoremap call pum#map#confirm() inoremap call pum#map#cancel() inoremap call pum#map#confirm() if g:skk_ddc_alternative == 'cmp' lua require('cmp').setup.buffer({ enabled = false }) elseif g:skk_ddc_alternative == 'mini' let g:minicompletion_disable = v:true endif endfunction function! s:skkeleton_disable() abort call ddc#custom#patch_buffer({'autoCompleteEvents': []}) iunmap iunmap iunmap iunmap iunmap iunmap iunmap if g:skk_ddc_alternative == 'cmp' lua require('cmp').setup.buffer({ enabled = true }) elseif g:skk_ddc_alternative == 'mini' let g:minicompletion_disable = v:false endif endfunction augroup skk_ddc_alt autocmd! autocmd User skkeleton-enable-pre call skkeleton_enable() autocmd User skkeleton-disable-pre call skkeleton_disable() autocmd User skkeleton-initialize-pre ++once call ddc_init() augroup END