From 71c818f815fea72227d0eca0c104cdc4ff98d4c8 Mon Sep 17 00:00:00 2001 From: Aotrix Date: Fri, 14 Feb 2025 19:03:43 +0100 Subject: added multigrep --- lua/nvim_settings/remap.lua | 8 +++---- lua/telescope/multigrep.lua | 53 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 lua/telescope/multigrep.lua (limited to 'lua') diff --git a/lua/nvim_settings/remap.lua b/lua/nvim_settings/remap.lua index 8a0f213..538a69a 100644 --- a/lua/nvim_settings/remap.lua +++ b/lua/nvim_settings/remap.lua @@ -16,8 +16,6 @@ vim.keymap.set("n", "Y", [["+Y]]) vim.keymap.set("n", "pv", function() require("telescope").extensions.file_browser.file_browser() end) vim.keymap.set("n", "pf", function() require("telescope.builtin").find_files() end) -vim.keymap.set("n", "pg", function() require("telescope").extensions.live_grep_args.live_grep_args() end) --- vim.keymap.set("n", "s", function() require("telescope").extensions.coc.document_symbols() end) vim.keymap.set("n", "s", function() require("telescope.builtin").treesitter() end) vim.keymap.set("n", "a", function() require("harpoon.mark").add_file() end) @@ -39,10 +37,10 @@ vim.keymap.set("n", "gi", "(coc-implementation)", {silent = true}) vim.keymap.set({'n', 'i', 'v'}, '', '') -- nvim-dap -vim.keymap.set("n", "b", function() require("dap").toggle_breakpoint() end) -vim.keymap.set("n", "gb", function() require("dap").run_to_cursor() end) +vim.keymap.set("n", "b", function() require("dap").toggle_breakpoint() end) +vim.keymap.set("n", "gb", function() require("dap").run_to_cursor() end) -- Eval var under cursor -vim.keymap.set("n", "?", function() +vim.keymap.set("n", "?", function() require("dapui").eval(nil, { enter = true }) end) vim.keymap.set("n", "", function() require("dap").continue() end) diff --git a/lua/telescope/multigrep.lua b/lua/telescope/multigrep.lua new file mode 100644 index 0000000..749102e --- /dev/null +++ b/lua/telescope/multigrep.lua @@ -0,0 +1,53 @@ +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 = {} + +local live_multigrep = function(opts) + opts = opts or {} + opts.cwd = opts.cwd or vim.uv.cwd() + + local finder = finders.new_async_job { + command_generator = function(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" }, + } + 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 + +M.setup = function() + vim.keymap.set("n", "pg", live_multigrep) +end + +return M -- cgit v1.2.3