1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-24 02:10:05 +08:00
SpaceVim/config/plugins/denite.vim
2017-06-10 14:13:56 +08:00

139 lines
4.7 KiB
VimL

scriptencoding utf-8
" load api
let s:sys = SpaceVim#api#import('system')
" denite option
let s:denite_options = {
\ 'default' : {
\ 'winheight' : 15,
\ 'mode' : 'insert',
\ 'quit' : 'true',
\ 'highlight_matched_char' : 'MoreMsg',
\ 'highlight_matched_range' : 'MoreMsg',
\ 'direction': 'rightbelow',
\ 'statusline' : 0,
\ 'prompt' : '➭',
\ }}
function! s:profile(opts) abort
for fname in keys(a:opts)
for dopt in keys(a:opts[fname])
call denite#custom#option(fname, dopt, a:opts[fname][dopt])
endfor
endfor
endfunction
call s:profile(s:denite_options)
" buffer source
call denite#custom#var(
\ 'buffer',
\ 'date_format', '%m-%d-%Y %H:%M:%S')
" denite command
if !s:sys.isWindows
if executable('rg')
" For ripgrep
" Note: It is slower than ag
call denite#custom#var('file_rec', 'command',
\ ['rg', '--hidden', '--files', '--glob', '!.git', '--glob', '']
\ + zvim#util#Generate_ignore(g:spacevim_wildignore, 'rg')
\ )
elseif executable('ag')
" Change file_rec command.
call denite#custom#var('file_rec', 'command',
\ ['ag' , '--nocolor', '--nogroup', '-g', '']
\ + zvim#util#Generate_ignore(g:spacevim_wildignore, 'ag')
\ )
endif
else
if executable('pt')
" For Pt(the platinum searcher)
" NOTE: It also supports windows.
call denite#custom#var('file_rec', 'command',
\ ['pt', '--follow', '--nocolor', '--nogroup', '-g:', ''])
endif
endif
" FIND and GREP COMMANDS
if executable('rg')
" Ripgrep command on grep source
call denite#custom#var('grep', 'command', ['rg'])
call denite#custom#var('grep', 'default_opts',
\ ['--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', [])
elseif executable('pt')
" Pt command on grep source
call denite#custom#var('grep', 'command', ['pt'])
call denite#custom#var('grep', 'default_opts',
\ ['--nogroup', '--nocolor', '--smart-case'])
call denite#custom#var('grep', 'recursive_opts', [])
call denite#custom#var('grep', 'pattern_opt', [])
call denite#custom#var('grep', 'separator', ['--'])
call denite#custom#var('grep', 'final_opts', [])
elseif executable('ag')
call denite#custom#var('grep', 'command', ['ag'])
call denite#custom#var('grep', 'recursive_opts', [])
call denite#custom#var('grep', 'pattern_opt', [])
call denite#custom#var('grep', 'separator', ['--'])
call denite#custom#var('grep', 'final_opts', [])
call denite#custom#var('grep', 'default_opts',
\ [ '--vimgrep', '--smart-case' ])
elseif executable('ack')
" Ack command
call denite#custom#var('grep', 'command', ['ack'])
call denite#custom#var('grep', 'recursive_opts', [])
call denite#custom#var('grep', 'pattern_opt', ['--match'])
call denite#custom#var('grep', 'separator', ['--'])
call denite#custom#var('grep', 'final_opts', [])
call denite#custom#var('grep', 'default_opts',
\ ['--ackrc', $HOME.'/.config/ackrc', '-H',
\ '--nopager', '--nocolor', '--nogroup', '--column'])
endif
" enable unite menu compatibility
call denite#custom#var('menu', 'unite_source_menu_compatibility', 1)
" KEY MAPPINGS
let s:insert_mode_mappings = [
\ ['jk', '<denite:enter_mode:normal>', 'noremap'],
\ ['<Tab>', '<denite:move_to_next_line>', 'noremap'],
\ ['<S-tab>', '<denite:move_to_previous_line>', 'noremap'],
\ ['<Esc>', '<denite:enter_mode:normal>', 'noremap'],
\ ['<C-N>', '<denite:assign_next_matched_text>', 'noremap'],
\ ['<C-P>', '<denite:assign_previous_matched_text>', 'noremap'],
\ ['<Up>', '<denite:assign_previous_text>', 'noremap'],
\ ['<Down>', '<denite:assign_next_text>', 'noremap'],
\ ['<C-Y>', '<denite:redraw>', 'noremap'],
\ ]
let s:normal_mode_mappings = [
\ ["'", '<denite:toggle_select_down>', 'noremap'],
\ ['<C-n>', '<denite:jump_to_next_source>', 'noremap'],
\ ['<C-p>', '<denite:jump_to_previous_source>', 'noremap'],
\ ['gg', '<denite:move_to_first_line>', 'noremap'],
\ ['st', '<denite:do_action:tabopen>', 'noremap'],
\ ['sg', '<denite:do_action:vsplit>', 'noremap'],
\ ['sv', '<denite:do_action:split>', 'noremap'],
\ ['q', '<denite:quit>', 'noremap'],
\ ['r', '<denite:redraw>', 'noremap'],
\ ]
for s:m in s:insert_mode_mappings
call denite#custom#map('insert', s:m[0], s:m[1], s:m[2])
endfor
for s:m in s:normal_mode_mappings
call denite#custom#map('normal', s:m[0], s:m[1], s:m[2])
endfor
unlet s:m s:insert_mode_mappings s:normal_mode_mappings
" vim:set et sw=2 cc=80: