Live grep with file patterns

This commit is contained in:
Hazem Krimi
2025-02-13 02:51:10 +01:00
parent d19a34bcfd
commit 90d7092f87
5 changed files with 51 additions and 10 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
require 'core.options' require 'config.options'
require 'core.keymaps' require 'config.keymaps'
require 'core.autocommands' require 'config.autocommands'
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
@@ -5,9 +5,6 @@ vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
local opts = { noremap = true, silent = true } local opts = { noremap = true, silent = true }
-- Delete single character without copying into register
vim.keymap.set('n', 'x', '"_x', opts)
-- Improvement to up and down movements -- Improvement to up and down movements
vim.keymap.set('n', '<C-d>', '<C-d>zz', opts) vim.keymap.set('n', '<C-d>', '<C-d>zz', opts)
vim.keymap.set('n', '<C-u>', '<C-u>zz', opts) vim.keymap.set('n', '<C-u>', '<C-u>zz', opts)
@@ -37,9 +34,6 @@ vim.keymap.set('n', '<leader>lw', '<cmd>set wrap!<CR>', opts)
vim.keymap.set('v', '<', '<gv', opts) vim.keymap.set('v', '<', '<gv', opts)
vim.keymap.set('v', '>', '>gv', opts) vim.keymap.set('v', '>', '>gv', opts)
-- Keep last yanked when pasting
vim.keymap.set('v', 'p', '"_dP', opts)
-- Diagnostic keymaps -- Diagnostic keymaps
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
+48 -1
View File
@@ -86,7 +86,6 @@ return {
vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' })
vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' }) vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
@@ -109,5 +108,53 @@ return {
prompt_title = 'Live Grep in Open Files', prompt_title = 'Live Grep in Open Files',
} }
end, { desc = '[S]earch [/] in Open Files' }) end, { desc = '[S]earch [/] in Open Files' })
vim.keymap.set('n', '<leader>sg', function(opts)
local pickers = require "telescope.pickers"
local finders = require "telescope.finders"
local make_entry = require "telescope.make_entry"
local conf = require "telescope.config".values
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, { desc = '[S]earch by [G]rep' })
end, end,
} }