multigrep.lua (1301B)
1 local M = {} 2 3 local pickers = require 'telescope.pickers' 4 local finders = require 'telescope.finders' 5 local make_entry = require 'telescope.make_entry' 6 local conf = require 'telescope.config'.values 7 8 function M.multigrep(opts) 9 opts = opts or {} 10 opts.cwd = opts.cwd or vim.uv.cwd() 11 12 local finder = finders.new_async_job { 13 command_generator = function(prompt) 14 if not prompt or prompt == "" then 15 return nil 16 end 17 18 local pieces = vim.split(prompt, " ") 19 local args = { "rg" } 20 if pieces[1] then 21 table.insert(args, "-e") 22 table.insert(args, pieces[1]) 23 end 24 25 if pieces[2] then 26 table.insert(args, "-g") 27 table.insert(args, pieces[2]) 28 end 29 30 return 31 ---@diagnostic disable-next-line: deprecated 32 vim.tbl_flatten { 33 args, 34 { 35 "--color=never", 36 "--no-heading", "--with-filename", "--line-number", "--column", "--smart-case" 37 } 38 } 39 end, 40 entry_maker = make_entry.gen_from_vimgrep(opts), 41 cwd = opts.cwd, 42 } 43 44 pickers.new(opts, { 45 debounce = 100, 46 prompt_title = "Multi Grep", 47 finder = finder, 48 previewer = conf.grep_previewer(opts), 49 sorter = require('telescope.sorters').empty(), 50 }):find() 51 end 52 53 return M