# TODO more plugins can be lazily loaded
# core plugins
[[plugins]]
repo = "haya14busa/dein-command.vim"
# linting
[[plugins]]
repo = "neomake/neomake"
on_cmd = "Neomake"
hook_post_source = """
call neomake#configure#automake('rw', 400)
let g:neomake_python_enabled_makers = ['python', 'pylint', 'mypy']
let g:neomake_cabal_args = ['new-build']
"""
[[plugins]]
repo = "Shougo/denite.nvim"
on_cmd = "Denite"
# TODO expand on these mappings
hook_add = """
autocmd FileType denite call s:denite_my_settings()
function! s:denite_my_settings() abort
nnoremap <silent><buffer><expr> <CR>
\ denite#do_map('do_action')
nnoremap <silent><buffer><expr> d
\ denite#do_map('do_action', 'delete')
nnoremap <silent><buffer><expr> p
\ denite#do_map('do_action', 'preview')
nnoremap <silent><buffer><expr> q
\ denite#do_map('quit')
nnoremap <silent><buffer><expr> i
\ denite#do_map('open_filter_buffer')
nnoremap <silent><buffer><expr> J
\ denite#do_map('toggle_select').'j'
nnoremap <silent><buffer><expr> K
\ denite#do_map('toggle_select').'k'
endfunction
nnoremap <leader>* g*N:Denite grep:::\\b<c-r>/\\b<cr>
nnoremap <leader>fr :Denite file/rec<cr>
"""
hook_post_source = """
call denite#custom#var('file/rec', 'command',
\ ['fd', '-H', '-t', 'f', '-E', '.git', '.'])
call denite#custom#var('grep', 'command', ['rg'])
call denite#custom#var('grep', 'default_opts',
\ ['-i', '--vimgrep', '--no-heading'])
call denite#custom#var('grep', 'recursive_opts', [])
call denite#custom#var('grep', 'pattern_opt', ['--regexp'])
call denite#custom#var('grep', 'separator', ['--'])
call denite#custom#var('grep', 'final_opts', [])
"""
# aesthetics
[[plugins]]
repo = "srcery-colors/srcery-vim"
# TODO this fails on first load
hook_add = """
colorscheme srcery
"""
[[plugins]]
repo = "vim-airline/vim-airline"
hook_add = """
set noshowmode
"""
# language support
[[plugins]]
repo = "cespare/vim-toml"
[[plugins]]
repo = "neovimhaskell/haskell-vim"
[[plugins]]
repo = "dag/vim-fish"
# completion
[[plugins]]
repo = "Shougo/deoplete.nvim"
#on_event = "InsertEnter"
hook_add = """
call deoplete#custom#option('auto_complete_delay', 300)
let g:deoplete#enable_at_startup = 1
let g:deoplete#max_menu_width = 60
inoremap <expr><C-h>
\ deoplete#smart_close_popup()."\<C-h>"
inoremap <expr><BS>
\ deoplete#smart_close_popup()."\<C-h>"
"""
[[plugins]]
repo = "Shougo/echodoc.vim"
hook_add = """
let g:echodoc#enable_at_startup = 1
set completeopt-=preview
"""
[[plugins]]
repo = "Shougo/neopairs.vim"
hook_add = """
let g:neopairs#enable = 1
" TODO technically this should add to the converters rather than replace
call g:deoplete#custom#source('_', 'converters', ['converter_auto_paren'])
"""
[[plugins]]
repo = "Shougo/neosnippet.vim"
depends = "neosnippet-snippets"
# TODO i_<C-k> is digraphs, maybe find better keybinding
hook_add = """
imap <C-k> <Plug>(neosnippet_expand_or_jump)
smap <C-k> <Plug>(neosnippet_expand_or_jump)
xmap <C-k> <Plug>(neosnippet_expand_target)
"""
# TODO useful?
# smap <expr><TAB> neosnippet#expandable_or_jumpable() ?
# \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
[[plugins]]
repo = "Shougo/neosnippet-snippets"
[[plugins]]
repo = "eagletmt/neco-ghc"
on_ft = "hs"
hook_post_source = """
let g:haskellmode_completion_ghc = 0
let g:necoghc_enable_detailed_browse = 1
"""
[[plugins]]
repo = "zchee/deoplete-jedi"
# passive improvements
[[plugins]]
repo = "tpope/vim-repeat"
# indent detection
[[plugins]]
repo = "tpope/vim-sleuth"
[[plugins]]
repo = "vim-scripts/argtextobj.vim"
# new commands
# :Abolish for typos, :Subvert for advanced :s, case coercion bindings
[[plugins]]
repo = "tpope/vim-abolish"
# TODO e.g. :Abolish {despa,sepe}rat{e,es,ed,ing,ely,ion,ions,or} {despe,sepa}rat{}
# cx, v_X -- exchange, cxc -- clear
[[plugins]]
repo = "tommcdo/vim-exchange"
# gc, :Commentary -- comment
[[plugins]]
repo = "tpope/vim-commentary"
[[plugins]]
repo = "tpope/vim-surround"
[[plugins]]
repo = "tpope/vim-unimpaired"