mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-11 03:05:46 +08:00
204 lines
6.9 KiB
VimL
204 lines
6.9 KiB
VimL
"=============================================================================
|
|
" search.vim --- search tools in SpaceVim
|
|
" Copyright (c) 2016-2017 Wang Shidong & Contributors
|
|
" Author: Wang Shidong < wsdjeg at 163.com >
|
|
" URL: https://spacevim.org
|
|
" License: GPLv3
|
|
"=============================================================================
|
|
|
|
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', '--column', '--hidden', '--ignore',
|
|
\ '.hg', '--ignore', '.svn', '--ignore', '.git', '--ignore', '.bzr',
|
|
\ ]
|
|
let s:search_tools.a.recursive_opt = []
|
|
let s:search_tools.a.expr_opt = []
|
|
let s:search_tools.a.fixed_string_opt = ['-F']
|
|
let s:search_tools.a.default_fopts = ['--nonumber']
|
|
let s:search_tools.a.smart_case = ['-S']
|
|
let s:search_tools.a.ignore_case = ['-i']
|
|
|
|
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.t.expr_opt = ['-e']
|
|
let s:search_tools.t.fixed_string_opt = []
|
|
let s:search_tools.t.default_fopts = []
|
|
let s:search_tools.t.smart_case = ['-S']
|
|
let s:search_tools.t.ignore_case = ['-i']
|
|
|
|
let s:search_tools.r = {}
|
|
let s:search_tools.r.command = 'rg'
|
|
let s:search_tools.r.default_opts = [
|
|
\ '--hidden', '--no-heading', '--color=never', '--with-filename', '--line-number', '--column',
|
|
\ '-g', '!.git'
|
|
\ ]
|
|
let s:search_tools.r.recursive_opt = []
|
|
let s:search_tools.r.expr_opt = ['-e']
|
|
let s:search_tools.r.fixed_string_opt = ['-F']
|
|
let s:search_tools.r.default_fopts = ['-N']
|
|
let s:search_tools.r.smart_case = ['-S']
|
|
let s:search_tools.r.ignore_case = ['-i']
|
|
|
|
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.k.expr_opt = []
|
|
let s:search_tools.k.fixed_string_opt = []
|
|
let s:search_tools.k.default_fopts = []
|
|
let s:search_tools.k.smart_case = ['--smart-case']
|
|
let s:search_tools.k.ignore_case = ['--ignore-case']
|
|
|
|
let s:search_tools.g = {}
|
|
let s:search_tools.g.command = 'grep'
|
|
let s:search_tools.g.default_opts = ['-inHr']
|
|
let s:search_tools.g.expr_opt = ['-e']
|
|
let s:search_tools.g.fixed_string_opt = ['-F']
|
|
let s:search_tools.g.recursive_opt = ['.']
|
|
let s:search_tools.g.default_fopts = []
|
|
let s:search_tools.g.smart_case = []
|
|
let s:search_tools.g.ignore_case = ['-i']
|
|
|
|
function! SpaceVim#mapping#search#grep(key, scope) abort
|
|
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']
|
|
let ignore = s:search_tools[a:key]['ignore_case']
|
|
let smart = s:search_tools[a:key]['smart_case']
|
|
let expr = s:search_tools[a:key]['expr_opt']
|
|
if a:scope ==# 'b'
|
|
call SpaceVim#plugins#flygrep#open({
|
|
\ 'input' : input('grep pattern:'),
|
|
\ 'files':'@buffers',
|
|
\ 'cmd' : cmd,
|
|
\ 'opt' : opt,
|
|
\ 'ropt' : ropt,
|
|
\ 'ignore_case' : ignore,
|
|
\ 'smart_case' : smart,
|
|
\ 'expr_opt' : expr,
|
|
\ })
|
|
elseif a:scope ==# 'B'
|
|
call SpaceVim#plugins#flygrep#open({
|
|
\ 'input' : expand('<cword>'),
|
|
\ 'files':'@buffers',
|
|
\ 'cmd' : cmd,
|
|
\ 'opt' : opt,
|
|
\ 'ropt' : ropt,
|
|
\ 'ignore_case' : ignore,
|
|
\ 'smart_case' : smart,
|
|
\ 'expr_opt' : expr,
|
|
\ })
|
|
elseif a:scope ==# 'p'
|
|
call SpaceVim#plugins#flygrep#open({
|
|
\ 'input' : input('grep pattern:'),
|
|
\ 'cmd' : cmd,
|
|
\ 'opt' : opt,
|
|
\ 'ropt' : ropt,
|
|
\ 'ignore_case' : ignore,
|
|
\ 'smart_case' : smart,
|
|
\ 'expr_opt' : expr,
|
|
\ })
|
|
elseif a:scope ==# 'P'
|
|
call SpaceVim#plugins#flygrep#open({
|
|
\ 'input' : expand('<cword>'),
|
|
\ 'cmd' : cmd,
|
|
\ 'opt' : opt,
|
|
\ 'ropt' : ropt,
|
|
\ 'ignore_case' : ignore,
|
|
\ 'smart_case' : smart,
|
|
\ 'expr_opt' : expr,
|
|
\ })
|
|
elseif a:scope ==# 'd'
|
|
call SpaceVim#plugins#flygrep#open({
|
|
\ 'input' : input('grep pattern:'),
|
|
\ 'dir' : fnamemodify(expand('%'), ':p:h'),
|
|
\ 'cmd' : cmd,
|
|
\ 'opt' : opt,
|
|
\ 'ropt' : ropt,
|
|
\ 'ignore_case' : ignore,
|
|
\ 'smart_case' : smart,
|
|
\ 'expr_opt' : expr,
|
|
\ })
|
|
elseif a:scope ==# 'D'
|
|
call SpaceVim#plugins#flygrep#open({
|
|
\ 'input' : expand('<cword>'),
|
|
\ 'dir' : fnamemodify(expand('%'), ':p:h'),
|
|
\ 'cmd' : cmd,
|
|
\ 'opt' : opt,
|
|
\ 'ropt' : ropt,
|
|
\ 'ignore_case' : ignore,
|
|
\ 'smart_case' : smart,
|
|
\ 'expr_opt' : expr,
|
|
\ })
|
|
elseif a:scope ==# 'f'
|
|
call SpaceVim#plugins#flygrep#open({
|
|
\ 'input' : input('grep pattern:'),
|
|
\ 'dir' : input('arbitrary dir:', '', 'dir'),
|
|
\ 'cmd' : cmd,
|
|
\ 'opt' : opt,
|
|
\ 'ropt' : ropt,
|
|
\ 'ignore_case' : ignore,
|
|
\ 'smart_case' : smart,
|
|
\ 'expr_opt' : expr,
|
|
\ })
|
|
elseif a:scope ==# 'F'
|
|
call SpaceVim#plugins#flygrep#open({
|
|
\ 'input' : expand('<cword>'),
|
|
\ 'dir' : input('arbitrary dir:', '', 'dir'),
|
|
\ 'cmd' : cmd,
|
|
\ 'opt' : opt,
|
|
\ 'ropt' : ropt,
|
|
\ 'ignore_case' : ignore,
|
|
\ 'smart_case' : smart,
|
|
\ 'expr_opt' : expr,
|
|
\ })
|
|
endif
|
|
endfunction
|
|
|
|
function! SpaceVim#mapping#search#default_tool() abort
|
|
if !has_key(s:search_tools, 'default_exe')
|
|
for t in get(g:, 'spacevim_search_tools', ['rg', 'ag', 'pt', 'ack', 'grep'])
|
|
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']
|
|
let s:search_tools.expr_opt = s:search_tools[key]['expr_opt']
|
|
let s:search_tools.fixed_string_opt = s:search_tools[key]['fixed_string_opt']
|
|
let s:search_tools.ignore_case = s:search_tools[key]['ignore_case']
|
|
let s:search_tools.smart_case = s:search_tools[key]['smart_case']
|
|
break
|
|
endif
|
|
endfor
|
|
if !has_key(s:search_tools, 'default_exe')
|
|
return ['', '', '', '', '', '', '']
|
|
endif
|
|
endif
|
|
return [
|
|
\ s:search_tools.default_exe,
|
|
\ s:search_tools.default_opt,
|
|
\ s:search_tools.default_ropt,
|
|
\ s:search_tools.expr_opt,
|
|
\ s:search_tools.fixed_string_opt,
|
|
\ s:search_tools.ignore_case,
|
|
\ s:search_tools.smart_case,
|
|
\ ]
|
|
endfunction
|
|
|
|
function! SpaceVim#mapping#search#getFopt(exe) abort
|
|
let key = s:search_tools.namespace[a:exe]
|
|
return s:search_tools[key]['default_fopts']
|
|
endfunction
|