" " hook_source {{{ " call ddc#custom#patch_global('ui', 'pum') call ddc#custom#patch_global('autoCompleteEvents', [ \ 'InsertEnter', \ 'TextChangedI', \ 'TextChangedP', \ ]) let sources = [ \ 'skkeleton', \ 'file', \ ] + ( has('nvim') ? ['nvim-lsp'] : [] ) call ddc#custom#patch_global('sources', sources) call ddc#custom#patch_global('cmdlineSources', \ ['cmdline', 'cmdline-history', 'file'] \ ) call ddc#custom#patch_filetype('markdown', 'sources', [ \ 'skkeleton', \ 'emoji', \ 'file', \ ]) call ddc#custom#patch_global('keywordPattern', '(\k*)|(:\w*)') call ddc#custom#patch_global('sourceOptions', #{ \ _: #{ \ maxItems: 10, \ minAutoCompleteLength: 1, \ matchers: ['matcher_fuzzy'], \ sorters: ['sorter_fuzzy'], \ converters: ['converter_fuzzy'], \ }, \ nvim-lsp: #{ \ mark: 'L', \ forceCompletionPattern: '\S[\.\[\(\{]\S*' \ }, \ file: #{ \ mark: 'F', \ isVolatile: v:true, \ forceCompletionPattern: '\S\/\S*' \ }, \ skkeleton: #{ \ mark: 'S', \ matchers: ['skkeleton'], \ isVolatile: v:true, \ }, \ emoji: #{ \ mark: 'E', \ matchers: ['emoji'], \ }, \ cmdline: #{ \ mark: '', \ }, \ cmdline-history: #{ \ mark: '', \ forceCompletionPattern: '\s+\S*', \ sorters: [], \ }, \ }) call ddc#custom#patch_global('filterParams', { \ 'matcher_fuzzy': { \ 'splitMode': 'word' \ } \ }) call ddc#enable() " }}} " " hook_add {{{ " inoremap pum#map#insert_relative(+1) inoremap pum#map#insert_relative(-1) inoremap pum#visible() \ ? '' \ : getline('.')[0:col('.')] =~# '[\s\\]*' \ ? '' \ : ddc#map#manual_complete() inoremap pum#visible() \ ? pum#map#insert_relative(-1) \ : '' inoremap pum#map#confirm() inoremap pum#map#cancel() " " Commandline completion " nnoremap : call CommandlinePre(): function! CommandlinePre() abort cnoremap pum#visible() \ ? 'call pum#map#insert_relative(+1)' \ : exists('b:ddc_cmdline_completion') \ ? ddc#map#manual_complete() \ : &wildcharm->nr2char() cnoremap pum#map#insert_relative(-1) cnoremap pum#map#insert_relative(+1) cnoremap pum#map#insert_relative(-1) cnoremap pum#map#confirm() cnoremap pum#map#cancel() " Overwrite sources if !exists('b:prev_buffer_config') let b:prev_buffer_config = ddc#custom#get_buffer() endif call ddc#custom#patch_buffer('cmdlineSources', [ \ 'file', \ 'cmdline', \ 'cmdline-history', \ ]) call ddc#custom#patch_buffer('autoCompleteEvents', [ \ 'CmdlineEnter', \ 'CmdlineChanged', \ ]) autocmd User DDCCmdlineLeave ++once call CommandlinePost() autocmd InsertEnter ++once call CommandlinePost() " Enable command line completion call ddc#enable_cmdline_completion() endfunction function! CommandlinePost() abort silent! cunmap silent! cunmap silent! cunmap silent! cunmap silent! cunmap silent! cunmap " Restore sources if exists('b:prev_buffer_config') call ddc#custom#set_buffer(b:prev_buffer_config) unlet b:prev_buffer_config else call ddc#custom#set_buffer({}) endif endfunction " }}}