diff --git a/lua/mj/telescope/grep_with_args.lua b/lua/mj/telescope/grep_with_args.lua new file mode 100644 index 0000000..84c4c42 --- /dev/null +++ b/lua/mj/telescope/grep_with_args.lua @@ -0,0 +1,56 @@ +local pickers = require("telescope.pickers") +local finders = require("telescope.finders") +local make_entry = require("telescope.make_entry") +local config = 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, " ") -- double space + 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 = config.grep_previewer(opts), + sorter = require("telescope.sorters").empty(), + }) + :find() +end + +M.setup = function() + live_multigrep() +end + +return M diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua index 14c4781..310dfd6 100644 --- a/lua/plugins/telescope.lua +++ b/lua/plugins/telescope.lua @@ -10,26 +10,10 @@ return { cwd = project_root, -- Force project root }) end, { desc = "Find Files (Project Root)" }) - end, - }, - { - "nvim-telescope/telescope-live-grep-args.nvim", - dependencies = { "nvim-telescope/telescope.nvim" }, - config = function() - require("telescope").load_extension("live_grep_args") - vim.keymap.set("n", "sg", function() - require("telescope").extensions.live_grep_args.live_grep_args() - end, { desc = "Live Grep with Args" }) + vim.keymap.set("n", "sg", function() + require("mj.telescope.grep_with_args").setup() + end, { desc = "Custom Live Grep With args" }) end, }, } - --- opts = function(_, opts) --- vim.keymap.set("n", "", function() --- local project_root = require("project_nvim.project").get_project_root() or vim.fn.getcwd() --- require("telescope.builtin").find_files({ --- cwd = project_root, -- Force project root --- }) --- end, { desc = "Find Files (Project Root)" }) --- end,