mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-24 03:00:06 +08:00
145 lines
4.5 KiB
Lua
145 lines
4.5 KiB
Lua
local M = {}
|
|
|
|
local search_tools = {}
|
|
|
|
search_tools.namespace = {
|
|
rg = 'r',
|
|
ag = 'a',
|
|
hw = 'h',
|
|
pt = 't',
|
|
ack = 'k',
|
|
grep = 'g',
|
|
findstr = 'i',
|
|
}
|
|
|
|
search_tools.a = {}
|
|
search_tools.a.command = 'ag'
|
|
search_tools.a.default_opts =
|
|
{
|
|
'-i', '--nocolor', '--filename', '--noheading', '--column', '--hidden', '--ignore',
|
|
'.hg', '--ignore', '.svn', '--ignore', '.git', '--ignore', '.bzr',
|
|
}
|
|
search_tools.a.recursive_opt = {}
|
|
search_tools.a.expr_opt = {}
|
|
search_tools.a.fixed_string_opt = {'-F'}
|
|
search_tools.a.default_fopts = {'--nonumber'}
|
|
search_tools.a.smart_case = {'-S'}
|
|
search_tools.a.ignore_case = {'-i'}
|
|
|
|
search_tools.t = {}
|
|
search_tools.t.command = 'pt'
|
|
search_tools.t.default_opts = {'--nogroup', '--nocolor'}
|
|
search_tools.t.recursive_opt = {}
|
|
search_tools.t.expr_opt = {'-e'}
|
|
search_tools.t.fixed_string_opt = {}
|
|
search_tools.t.default_fopts = {}
|
|
search_tools.t.smart_case = {'-S'}
|
|
search_tools.t.ignore_case = {'-i'}
|
|
|
|
search_tools.h = {}
|
|
search_tools.h.command = 'hw'
|
|
search_tools.h.default_opts = {'--no-group', '--no-color'}
|
|
search_tools.h.recursive_opt = {}
|
|
search_tools.h.expr_opt = {}
|
|
search_tools.h.fixed_string_opt = {}
|
|
search_tools.h.default_fopts = {}
|
|
search_tools.h.smart_case = {}
|
|
search_tools.h.ignore_case = {}
|
|
|
|
search_tools.r = {}
|
|
search_tools.r.command = 'rg'
|
|
search_tools.r.default_opts = {
|
|
'--hidden', '--no-heading', '--color=never', '--with-filename', '--line-number', '--column',
|
|
'-g', '!.git'
|
|
}
|
|
search_tools.r.recursive_opt = {}
|
|
search_tools.r.expr_opt = {'-e'}
|
|
search_tools.r.fixed_string_opt = {'-F'}
|
|
search_tools.r.default_fopts = {'-N'}
|
|
search_tools.r.smart_case = {'-S'}
|
|
search_tools.r.ignore_case = {'-i'}
|
|
|
|
search_tools.k = {}
|
|
search_tools.k.command = 'ack'
|
|
search_tools.k.default_opts = {'-i', '--no-heading', '--no-color', '-k', '-H'}
|
|
search_tools.k.recursive_opt = {}
|
|
search_tools.k.expr_opt = {}
|
|
search_tools.k.fixed_string_opt = {}
|
|
search_tools.k.default_fopts = {}
|
|
search_tools.k.smart_case = {'--smart-case'}
|
|
search_tools.k.ignore_case = {'--ignore-case'}
|
|
|
|
search_tools.g = {}
|
|
search_tools.g.command = 'grep'
|
|
search_tools.g.default_opts = {'-inHr'}
|
|
search_tools.g.expr_opt = {'-e'}
|
|
search_tools.g.fixed_string_opt = {'-F'}
|
|
search_tools.g.recursive_opt = {'.'}
|
|
search_tools.g.default_fopts = {}
|
|
search_tools.g.smart_case = {}
|
|
search_tools.g.ignore_case = {'-i'}
|
|
|
|
search_tools.G = {}
|
|
search_tools.G.command = 'git'
|
|
search_tools.G.default_opts = {'grep', '-n', '--column'}
|
|
search_tools.G.expr_opt = {'-E'}
|
|
search_tools.G.fixed_string_opt = {'-F'}
|
|
search_tools.G.recursive_opt = {'.'}
|
|
search_tools.G.default_fopts = {}
|
|
search_tools.G.smart_case = {}
|
|
search_tools.G.ignore_case = {'-i'}
|
|
|
|
search_tools.i = {}
|
|
search_tools.i.command = 'findstr'
|
|
search_tools.i.default_opts = {'/RSN'}
|
|
search_tools.i.recursive_opt = {}
|
|
search_tools.i.expr_opt = {}
|
|
search_tools.i.fixed_string_opt = {}
|
|
search_tools.i.default_fopts = {}
|
|
search_tools.i.smart_case = {}
|
|
search_tools.i.ignore_case = {'/I'}
|
|
|
|
--- @return string default_exe the default executable of searching tool
|
|
--- @return table default_opt default searching option
|
|
--- @return table default_ropt default ropt of tool
|
|
--- @return table expr_opt expr_opt of searching tool
|
|
--- @return table fixed_string_opt fixed string option of searching tool
|
|
--- @return table ignore_case ignore case option
|
|
--- @return table smart_case smart case option
|
|
function M.default_tool()
|
|
if search_tools.default_exe == nil then
|
|
for _, t in ipairs(vim.g.spacevim_search_tools or {'rg', 'ag', 'pt', 'ack', 'grep'}) do
|
|
if vim.fn.executable(t) == 1 then
|
|
search_tools.default_exe = t
|
|
local key = search_tools.namespace[t]
|
|
search_tools.default_opt = search_tools[key]['default_opts']
|
|
search_tools.default_ropt = search_tools[key]['recursive_opt']
|
|
search_tools.expr_opt = search_tools[key]['expr_opt']
|
|
search_tools.fixed_string_opt = search_tools[key]['fixed_string_opt']
|
|
search_tools.ignore_case = search_tools[key]['ignore_case']
|
|
search_tools.smart_case = search_tools[key]['smart_case']
|
|
break
|
|
end
|
|
end
|
|
if search_tools.default_exe == nil then
|
|
return '', {}, {}, {}, {}, {}, {}
|
|
end
|
|
end
|
|
return search_tools.default_exe,
|
|
search_tools.default_opt,
|
|
search_tools.default_ropt,
|
|
search_tools.expr_opt,
|
|
search_tools.fixed_string_opt,
|
|
search_tools.ignore_case,
|
|
search_tools.smart_case
|
|
|
|
end
|
|
|
|
function M.getFopt(exe)
|
|
local key = search_tools.namespace[exe]
|
|
return search_tools[key]['default_fopts']
|
|
end
|
|
|
|
|
|
return M
|