" hook_add {{{ nnoremap : call CommandlinePre(':'): nnoremap ? call CommandlinePre('/')? xnoremap : call CommandlinePre(':'): nnoremap + call CommandlinePre('dda'):Dda function! CommandlinePre(mode) abort " Overwrite sources let b:prev_buffer_config = ddc#custom#get_buffer() if a:mode ==# ':' call ddc#custom#patch_buffer('sourceOptions', #{ \ _: #{ \ keywordPattern: '[0-9a-zA-Z_:#*/.-]*', \ }, \ }) " Use zsh source for :! completion call ddc#custom#set_context_buffer({ -> \ getcmdline()->stridx('!') ==# 0 \ ? { \ 'cmdlineSources': [ \ 'shell_native', 'cmdline', 'cmdline_history', 'around', \ ], \ } \ : {} }) "call ddc#custom#patch_buffer('ui', 'inline') elseif a:mode ==# 'dda' " For AI completion call ddc#custom#patch_buffer('cmdlineSources', ['around', 'mocword']) endif autocmd MyAutoCmd User DDCCmdlineLeave ++once call CommandlinePost() call ddc#enable_cmdline_completion() endfunction function! CommandlinePost() abort " Restore config if 'b:prev_buffer_config'->exists() call ddc#custom#set_buffer(b:prev_buffer_config) unlet b:prev_buffer_config endif endfunction " }}} " hook_source {{{ call ddc#custom#load_config('$BASE_DIR/ddc.ts'->expand()) " Context config "call ddc#custom#set_context_filetype('go', { -> " \ ddc#syntax#in('TSComment') " \ ? #{ sources: ['around', 'mocword'] } " \ : {} " \ }) "call ddc#custom#set_context_filetype('c', { -> " \ ddc#syntax#in('Comment') " \ ? #{ sources: ['around', 'mocword'] } " \ : {} " \ }) " For insert mode completion inoremap call pum#map#insert_relative(-1, 'empty') inoremap call pum#map#select_relative(+1) inoremap call pum#map#select_relative(-1) "inoremap call pum#map#confirm() inoremap call pum#map#confirm_suffix() inoremap call pum#map#confirm_word() inoremap call pum#map#insert_relative(-9999, 'ignore') inoremap call pum#map#insert_relative(+9999, 'ignore') inoremap call pum#map#toggle_preview() inoremap "inoremap call pum#update_current_item(#{ display: 'hoge' }) "inoremap call pum#map#scroll_preview(+1) "inoremap call pum#map#scroll_preview(-1) inoremap ddc#map#insert_item(0) cnoremap ddc#map#insert_item(0) inoremap \ ddc#ui#inline#visible() \ ? ddc#map#insert_item(0) \ : pum#visible() \ ? 'call pum#map#insert_relative(+1, "empty")' \ : col('.') <= 1 ? '' \ : getline('.')[col('.') - 2] =~# '\s' \ ? '' \ : ddc#map#manual_complete() inoremap \ ddc#ui#inline#visible() \ ? ddc#map#insert_item(0) \ : pum#visible() \ ? 'call pum#map#cancel()' \ : '' inoremap ddc#map#manual_complete() " Mouse support inoremap call pum#map#confirm_mouse() cnoremap call pum#map#confirm_mouse() tnoremap call pum#map#confirm_mouse() " For command line mode completion cnoremap call pum#map#insert_relative(-1) cnoremap call pum#map#confirm() cnoremap call pum#map#select_relative(+1) cnoremap call pum#map#select_relative(-1) cnoremap call pum#map#confirm() "cnoremap call pum#map#toggle_preview() "cnoremap call pum#map#scroll_preview(+1) "cnoremap call pum#map#scroll_preview(-1) cnoremap \ ddc#ui#inline#visible() \ ? ddc#map#insert_item(0) \ : wildmenumode() \ ? &wildcharm->nr2char() \ : pum#visible() \ ? 'call pum#map#insert_relative(+1)' \ : ddc#map#manual_complete() cnoremap \ ddc#ui#inline#visible() \ ? ddc#map#insert_item(0) \ : pum#visible() \ ? 'call pum#map#cancel()' \ : '' xnoremap "_Rcall ddc#map#manual_complete() snoremap "_dicall ddc#map#manual_complete() " Enable terminal completion call ddc#enable_terminal_completion() call ddc#enable(#{ \ context_filetype: has('nvim') ? 'treesitter' : 'none', \ }) " }}}