neovim

Personal neovim configuration files
git clone git://gtms.dev/neovim
Log | Files | Refs

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