1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-11 18:14:00 +08:00
SpaceVim/autoload/SpaceVim/mapping/search.vim
2018-01-23 23:32:14 +08:00

102 lines
3.4 KiB
VimL

let s:search_tools = {}
let s:search_tools.namespace = {
\ 'rg' : 'r',
\ 'ag' : 'a',
\ 'pt' : 't',
\ 'ack' : 'k',
\ 'grep' : 'g',
\ }
let s:search_tools.a = {}
let s:search_tools.a.command = 'ag'
let s:search_tools.a.default_opts =
\ '-i --vimgrep --hidden --ignore ' .
\ '''.hg'' --ignore ''.svn'' --ignore ''.git'' --ignore ''.bzr'''
let s:search_tools.a.recursive_opt = ''
let s:search_tools.t = {}
let s:search_tools.t.command = 'pt'
let s:search_tools.t.default_opts = '--nogroup --nocolor'
let s:search_tools.t.recursive_opt = ''
let s:search_tools.r = {}
let s:search_tools.r.command = 'rg'
let s:search_tools.r.default_opts = '--hidden --no-heading --vimgrep -S'
let s:search_tools.r.recursive_opt = ''
let s:search_tools.k = {}
let s:search_tools.k.command = 'ack'
let s:search_tools.k.default_opts = '-i --no-heading --no-color -k -H'
let s:search_tools.k.recursive_opt = ''
let s:search_tools.g = {}
let s:search_tools.g.command = 'grep'
let s:search_tools.g.default_opts = '-inH'
let s:search_tools.g.recursive_opt = ''
function! SpaceVim#mapping#search#grep(key, scope)
let cmd = s:search_tools[a:key]['command']
let opt = s:search_tools[a:key]['default_opts']
let ropt = s:search_tools[a:key]['recursive_opt']
if a:scope ==# 'b'
call SpaceVim#plugins#flygrep#open({
\ 'input' : input('grep pattern:'),
\ 'files':'@buffers',
\ 'cmd' : cmd,
\ 'opt' : opt,
\ 'ropt' : ropt,
\ })
elseif a:scope ==# 'B'
call SpaceVim#plugins#flygrep#open({
\ 'input' : expand('<cword>'),
\ 'files':'@buffers',
\ 'cmd' : cmd,
\ 'opt' : opt,
\ 'ropt' : ropt,
\ })
elseif a:scope ==# 'p'
call SpaceVim#plugins#flygrep#open({
\ 'input' : input('grep pattern:'),
\ 'cmd' : cmd,
\ 'opt' : opt,
\ 'ropt' : ropt,
\ })
elseif a:scope ==# 'P'
call SpaceVim#plugins#flygrep#open({
\ 'input' : expand('<cword>'),
\ 'cmd' : cmd,
\ 'opt' : opt,
\ 'ropt' : ropt,
\ })
elseif a:scope ==# 'f'
call SpaceVim#plugins#flygrep#open({
\ 'input' : input('grep pattern:'),
\ 'dir' : input('arbitrary dir:', '', 'dir'),
\ 'cmd' : cmd,
\ 'opt' : opt,
\ 'ropt' : ropt,
\ })
elseif a:scope ==# 'F'
call SpaceVim#plugins#flygrep#open({
\ 'input' : expand('<cword>'),
\ 'dir' : input('arbitrary dir:', '', 'dir'),
\ 'cmd' : cmd,
\ 'opt' : opt,
\ 'ropt' : ropt,
\ })
endif
endfunction
function! SpaceVim#mapping#search#default_tool()
if !has_key(s:search_tools, 'default_exe')
for t in g:spacevim_search_tools
if executable(t)
let s:search_tools.default_exe = t
let key = s:search_tools.namespace[t]
let s:search_tools.default_opt = s:search_tools[key]['default_opts']
let s:search_tools.default_ropt = s:search_tools[key]['recursive_opt']
endif
endfor
endif
return [s:search_tools.default_exe, s:search_tools.default_opt, s:search_tools.default_ropt]
endfunction