[[plugins]]
repo = 'machakann/vim-sandwich'
on_map = { xno = '<Plug>', n = '<Plug>(operator-sandwich-dot)' }
hook_add = '''
" vim-surround like mappings
execute 'source' dein#get('vim-sandwich').path .. '/macros/sandwich/keymap/surround.vim'
let g:sandwich#magicchar#f#patterns = [#{
      \ header: '\<\%(\h\k*\.\)*\h\k*',
      \ bra   : '(',
      \ ket   : ')',
      \ footer: '',
      \ }]
'''
hook_source = '''
call operator#sandwich#set('add', 'char', 'skip_space', 1)
'''

[[plugins]]
repo = 'yuki-yano/vim-textobj-generics'
depends = ['vim-sandwich', 'vim-textobj-functioncall']
on_source = 'vim-sandwich'
on_map = { xo = '<Plug>' }
hook_add = '''
let g:textobj_generics_no_default_key_mappings = v:true
onoremap ag <Plug>(textobj-generics-i)
onoremap ig <Plug>(textobj-generics-innerparen-i)
xnoremap ag <Plug>(textobj-generics-i)
xnoremap ig <Plug>(textobj-generics-innerparen-i)
'''
hook_source = '''
" from README
let g:sandwich#recipes = get(g:, 'sandwich#recipes', g:sandwich#default_recipes) + [
      \ #{
      \   buns: ['textobj#generics#input_generics()', '">"'],
      \   expr: v:true,
      \   cursor: 'inner_tail',
      \   kind: ['add', 'replace'],
      \   action: ['add'],
      \   input: ['g'],
      \ },
      \ #{
      \   external: ['i<', "\<Plug>(textobj-generics-a)"],
      \   noremap: v:false,
      \   kind: ['delete', 'replace', 'query'],
      \   input: ['g'],
      \ },
      \ ]
'''

[[plugins]]
repo = 'kana/vim-operator-user'

[[plugins]]
repo = 'kana/vim-textobj-user'

# [[plugins]]
# repo = 'kana/vim-textobj-indent'
# on_map = { xo = '<Plug>' }
# depends = ['vim-textobj-user']

[[plugins]]
repo = 'kana/vim-textobj-entire'
on_map = { xo = '<Plug>' }
depends = ['vim-textobj-user']
hook_add = '''
onoremap ae <Plug>(textobj-entire-a)
onoremap ie <Plug>(textobj-entire-i)
xnoremap ae <Plug>(textobj-entire-a)
xnoremap ie <Plug>(textobj-entire-i)
'''

[[plugins]]
repo = 'kana/vim-textobj-line'
on_map = { xo = '<Plug>' }
depends = ['vim-textobj-user']
hook_add = '''
onoremap al <Plug>(textobj-line-a)
onoremap il <Plug>(textobj-line-i)
xnoremap al <Plug>(textobj-line-a)
xnoremap il <Plug>(textobj-line-i)
'''

[[plugins]]
repo = 'machakann/vim-textobj-functioncall'
on_map = { xo = '<Plug>' }
depends = ['vim-textobj-user']
hook_add = '''
" from https://github.com/yuki-yano/dotfiles/blob/8840dc3a90/.vimrc#L2953
let g:textobj_functioncall_no_default_key_mappings = v:true
let g:textobj_functioncall_patterns = [#{
      \ header: '\<\%(\h\k*\.\)*\h\k*',
      \ bra   : '(',
      \ ket   : ')',
      \ footer: '',
      \ }]
onoremap af <Plug>(textobj-functioncall-i)
onoremap if <Plug>(textobj-functioncall-innerparen-i)
xnoremap af <Plug>(textobj-functioncall-i)
xnoremap if <Plug>(textobj-functioncall-innerparen-i)
'''

[[plugins]]
repo = 'osyo-manga/vim-textobj-context'
on_map = { xo = '<Plug>' }
depends = ['vim-textobj-user']
hook_add = '''
onoremap ix <Plug>(textobj-context-i)
xnoremap ix <Plug>(textobj-context-i)
'''

[[plugins]]
repo = 'rhysd/vim-textobj-anyblock'
on_map = { xo = '<Plug>' }
depends = ['vim-textobj-user']
hook_add = '''
onoremap ab <Plug>(textobj-anyblock-a)
onoremap ib <Plug>(textobj-anyblock-i)
xnoremap ab <Plug>(textobj-anyblock-a)
xnoremap ib <Plug>(textobj-anyblock-i)
'''

[[plugins]]
repo = 'rhysd/vim-textobj-wiw'
on_map = { xo = '<Plug>' }
depends = ['vim-textobj-user']
hook_add = '''
let g:textobj_wiw_no_default_key_mappings = v:true
onoremap au <Plug>(textobj-wiw-a)
onoremap iu <Plug>(textobj-wiw-i)
xnoremap au <Plug>(textobj-wiw-a)
xnoremap iu <Plug>(textobj-wiw-i)
'''

[[plugins]]
repo = 'thinca/vim-textobj-between'
on_map = { xo = '<Plug>' }
depends = ['vim-textobj-user']
hook_add = '''
let g:textobj_between_no_default_key_mappings = v:true
onoremap ao <Plug>(textobj-between-a)
onoremap io <Plug>(textobj-between-i)
xnoremap ao <Plug>(textobj-between-a)
xnoremap io <Plug>(textobj-between-i)
'''