1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-24 05:20:04 +08:00
SpaceVim/lua/spacevim/plugin/search.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