|
@ -0,0 +1,59 @@ |
|
|
|
|
|
local pickers = require("telescope.pickers") |
|
|
|
|
|
local finders = require("telescope.finders") |
|
|
|
|
|
local make_entry = require("telescope.make_entry") |
|
|
|
|
|
local conf = require("telescope.config").values |
|
|
|
|
|
|
|
|
|
|
|
local M = {} |
|
|
|
|
|
|
|
|
|
|
|
M.live_multgrep = function (opts) |
|
|
|
|
|
opts = opts or {} |
|
|
|
|
|
opts.cwd = opts.cwd or vim.uv.cwd() |
|
|
|
|
|
|
|
|
|
|
|
local finder = finders.new_async_job({ |
|
|
|
|
|
command_generator = function (prompt) |
|
|
|
|
|
print(prompt) |
|
|
|
|
|
if not prompt or prompt == "" then |
|
|
|
|
|
return nil |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
local pieces = vim.split(prompt, " ") |
|
|
|
|
|
|
|
|
|
|
|
local args = { "rg" } |
|
|
|
|
|
if pieces[1] then |
|
|
|
|
|
table.insert(args, "-e") |
|
|
|
|
|
table.insert(args, pieces[1]) |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
if pieces[2] then |
|
|
|
|
|
table.insert(args, "-g") |
|
|
|
|
|
table.insert(args, pieces[2]) |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
---@diagnostic disable-next-line: deprecated |
|
|
|
|
|
return vim.tbl_flatten({ |
|
|
|
|
|
args, |
|
|
|
|
|
{ |
|
|
|
|
|
"--color=never", |
|
|
|
|
|
"--no-heading", |
|
|
|
|
|
"--with-filename", |
|
|
|
|
|
"--line-number", |
|
|
|
|
|
"--column", |
|
|
|
|
|
"--smart-case", |
|
|
|
|
|
"--hidden", |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
end, |
|
|
|
|
|
entry_maker = make_entry.gen_from_vimgrep(opts), |
|
|
|
|
|
cwd = opts.cwd |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
pickers.new(opts, { |
|
|
|
|
|
debounce = 100, |
|
|
|
|
|
prompt_title = "Multi Grep", |
|
|
|
|
|
finder = finder, |
|
|
|
|
|
previewer = conf.grep_previewer(opts), |
|
|
|
|
|
sorter = require("telescope.sorters").empty(), |
|
|
|
|
|
}):find() |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
return M |