[[plugins]]
repo = 'Shougo/ddc.vim'
hook_add = '''
  augroup StartDdc
    autocmd!
    autocmd InsertEnter,CmdlineEnter * ++once call s:ddc_setup()
  augroup END
  augroup MyDdcCmdLine
    autocmd!
    autocmd CmdlineEnter * call ddc#enable_cmdline_completion()
  augroup END

  function! s:ddc_setup() abort
    autocmd! StartDdc
    function s:confirm()
      let info = pum#complete_info()
      let index = info.selected
      if skkeleton#is_enabled()
        if info.selected == -1
          call pum#map#insert_relative(1)
        endif
        return "\<Ignore>"
      endif
      if info.selected == -1
        call pum#map#select_relative(+1)
        let index = 0
      endif
      call pum#map#confirm()
      return "\<Ignore>"
    endfunction
    inoremap <silent><expr> <Tab>
          \ pum#visible() ? <SID>confirm() :
          \ (col('.') <= 1 <Bar><Bar> getline('.')[col('.') - 2] =~# '\s') ?
          \ '<TAB>' : ddc#map#manual_complete()
    inoremap <C-n>   <Cmd>call pum#map#select_relative(+1)<CR>
    inoremap <C-p>   <Cmd>call pum#map#select_relative(-1)<CR>
    inoremap <C-y>   <Cmd>call pum#map#confirm()<CR>
    inoremap <C-e>   <Cmd>call pum#map#cancel()<CR>
    inoremap <C-x><C-f> <Cmd>call ddc#map#manual_complete({'sources': ['file']})<CR>

    cnoremap <silent><expr> <TAB>
          \ pum#visible() ? '<Cmd>call pum#map#insert_relative(+1)<CR>' :
          \ ddc#map#manual_complete()
    cnoremap <S-Tab> <Cmd>call pum#map#insert_relative(-1)<CR>
    cnoremap <C-y>   <Cmd>call pum#map#confirm()<CR>

    call pum#set_option('setline_insert', v:false)
    call pum#set_option('scrollbar_char', '')

    " ~/dotfiles/nvim/denops/vimrc/plugins/ddc.ts
    call ddc#custom#load_config(expand("~/dotfiles/nvim/plugins/ddc.ts"))

    call dein#source(["vim-vsnip"])
    call popup_preview#enable()
    call signature_help#enable()
    call ddc#enable()
  endfunction
'''

[[plugins]]
repo = 'Shougo/pum.vim'

[[plugins]]
repo = 'Shougo/ddc-ui-pum'

[[plugins]]
repo = 'Shougo/context_filetype.vim'

[[plugins]]
repo = 'Shougo/neco-vim'
on_ft = ['vim', 'toml']
lazy = 1

[[plugins]]
repo = 'Shougo/ddc-cmdline'

[[plugins]]
repo = 'Shougo/ddc-cmdline-history'

[[plugins]]
repo = 'Shougo/ddc-around'

[[plugins]]
repo = 'Shougo/ddc-source-input'

[[plugins]]
repo = 'Shougo/ddc-zsh'

[[plugins]]
repo = 'Shougo/ddc-matcher_head'

[[plugins]]
repo = 'Shougo/ddc-converter_remove_overlap'

[[plugins]]
repo = 'Shougo/ddc-sorter_rank'

[[plugins]]
repo = 'matsui54/ddc-dictionary'

[[plugins]]
repo = 'tani/ddc-fuzzy'

[[plugins]]
repo = 'Shougo/ddc-nvim-lsp'

[[plugins]]
repo = 'matsui54/ddc-buffer'

[[plugins]]
repo = 'matsui54/ddc-ultisnips'

[[plugins]]
repo = 'matsui54/ddc-filter_editdistance'

[[plugins]]
repo = "matsui54/ddc-postfilter_score"

[[plugins]]
repo = 'matsui54/ddc-converter_truncate'

[[plugins]]
repo = "gamoutatsumi/ddc-emoji"

[[plugins]]
repo = 'matsui54/denops-popup-preview.vim'
hook_add = '''
	let g:popup_preview_config = {
	      \ 'delay': 30,
        \ 'maxWidth': 100,
        \ 'winblend': 0,
        \ 'debug': v:false,
	      \ }
  let g:markdown_fenced_languages = ['ts=typescript']
'''

[[plugins]]
repo = 'matsui54/denops-signature_help'
hook_add = '''
	let g:signature_help_config = {
        \ 'contentsStyle': 'labels',
        \ 'viewStyle': 'virtual',
        \ 'border': v:false,
        \ }
'''

[[plugins]]
repo = 'ray-x/lsp_signature.nvim'
lazy = 1
if = "has('nvim')"
on_source = 'nvim-lspconfig'

[[plugins]]
repo = 'shun/ddc-vim-lsp'

[[plugins]]
repo = 'LumaKernel/ddc-file'

[[plugins]]
repo = 'hrsh7th/vim-vsnip'
lazy = 1
depends = ['friendly-snippets']
hook_add = '''
" Expand
imap <expr> <C-l> vsnip#expandable() ? '<Plug>(vsnip-expand)' : '<C-l>'
smap <expr> <C-l> vsnip#expandable() ? '<Plug>(vsnip-expand)' : '<C-l>'

" Jump forward or backward
imap <expr> <C-f> vsnip#jumpable(1)  ? '<Plug>(vsnip-jump-next)' : '<C-f>'
smap <expr> <C-f> vsnip#jumpable(1)  ? '<Plug>(vsnip-jump-next)' : '<C-f>'
imap <expr> <C-b> vsnip#jumpable(-1) ? '<Plug>(vsnip-jump-prev)' : '<C-b>'
smap <expr> <C-b> vsnip#jumpable(-1) ? '<Plug>(vsnip-jump-prev)' : '<C-b>'
let g:vsnip_snippet_dir = expand('~/dotfiles/nvim/snippets')
'''

[[plugins]]
repo = 'uga-rosa/ddc-source-vsnip'

[[plugins]]
repo = 'rafamadriz/friendly-snippets'

[[plugins]]
repo = 'vim-skk/denops-skkeleton.vim'
lazy = 1
on_map = {ic = '<plug>(skkeleton-'}
hook_add = '''
  imap <C-j> <Plug>(skkeleton-toggle)
  cmap <C-j> <Plug>(skkeleton-toggle)

  function! s:skkeleton_init() abort
    " <BS>/<C-h>で変換候補を戻す
    call skkeleton#register_keymap('henkan', "\<BS>", 'henkanBackward')
    call skkeleton#register_keymap('henkan', "\<C-h>", 'henkanBackward')
    call skkeleton#register_keymap('henkan', "x", '')

    call skkeleton#config({
      \ 'userJisyo': expand('~/.cache/skkeleton/skkeleton'),
      \ 'completionRankFile': expand('~/.cache/skkeleton/rank.json'),
      \ })
    call skkeleton#register_kanatable('rom', {
      \ "z\<Space>": ["\u3000", ''],
      \ 'jj': 'escape',
      \ 'z,': [',', ''],
      \ 'z.': ['.', ''],
      \ 'z9': ['(', ''],
      \ 'z0': [')', ''],
      \ '~': ['~', ''],
      \ })
    if has('win32') || has('win64')
      call skkeleton#config({
        \ 'globalJisyo': expand('~/AppData/Local/skk/SKK-JISYO.L')
        \ })
    endif
  endfunction
  autocmd User skkeleton-initialize-pre call s:skkeleton_init()
  augroup MyDdcSkkeleton
    autocmd!
    autocmd User skkeleton-enable-pre call s:skkeleton_pre()
    autocmd User skkeleton-disable-pre call s:skkeleton_post()
  augroup END
  function! s:skkeleton_pre() abort
    " Overwrite sources
    inoremap <C-n>   <Cmd>call pum#map#insert_relative(+1)<CR>
    inoremap <C-p>   <Cmd>call pum#map#insert_relative(-1)<CR>
    let s:prev_buffer_config = ddc#custom#get_buffer()
    call ddc#custom#patch_buffer('sources', ['skkeleton'])
  endfunction
  function! s:skkeleton_post() abort
    " Restore sources
    inoremap <C-n>   <Cmd>call pum#map#select_relative(+1)<CR>
    inoremap <C-p>   <Cmd>call pum#map#select_relative(-1)<CR>
    call ddc#custom#set_buffer(s:prev_buffer_config)
  endfunction
'''