diff --git a/init.lua b/init.lua index 34441f0..6519791 100644 --- a/init.lua +++ b/init.lua @@ -1,6 +1,6 @@ -require 'core.options' -require 'core.keymaps' -require 'core.autocommands' +require 'config.options' +require 'config.keymaps' +require 'config.autocommands' local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' diff --git a/lua/core/autocommands.lua b/lua/config/autocommands.lua similarity index 100% rename from lua/core/autocommands.lua rename to lua/config/autocommands.lua diff --git a/lua/core/keymaps.lua b/lua/config/keymaps.lua similarity index 91% rename from lua/core/keymaps.lua rename to lua/config/keymaps.lua index c095800..077ebbe 100644 --- a/lua/core/keymaps.lua +++ b/lua/config/keymaps.lua @@ -5,9 +5,6 @@ vim.keymap.set({ 'n', 'v' }, '', '', { 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 vim.keymap.set('n', '', 'zz', opts) vim.keymap.set('n', '', 'zz', opts) @@ -37,9 +34,6 @@ vim.keymap.set('n', 'lw', 'set wrap!', opts) vim.keymap.set('v', '<', '', '>gv', opts) --- Keep last yanked when pasting -vim.keymap.set('v', 'p', '"_dP', opts) - -- 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_next, { desc = 'Go to next diagnostic message' }) diff --git a/lua/core/options.lua b/lua/config/options.lua similarity index 100% rename from lua/core/options.lua rename to lua/config/options.lua diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua index ec39068..9d95fa8 100644 --- a/lua/plugins/telescope.lua +++ b/lua/plugins/telescope.lua @@ -86,7 +86,6 @@ return { vim.keymap.set('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set('n', 'ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) vim.keymap.set('n', 'sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) - vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) @@ -109,5 +108,53 @@ return { prompt_title = 'Live Grep in Open Files', } end, { desc = '[S]earch [/] in Open Files' }) + + vim.keymap.set('n', '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, }