Skip to content

Commit fadad07

Browse files
committed
Add telescope grep in changed files
1 parent a326dfd commit fadad07

File tree

1 file changed

+41
-5
lines changed

1 file changed

+41
-5
lines changed

init.lua

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,19 @@ require('lazy').setup({
600600

601601
-- See `:help telescope.builtin`
602602
local builtin = require 'telescope.builtin'
603+
local pickers = require 'telescope.pickers'
604+
local finders = require 'telescope.finders'
605+
local conf = require('telescope.config').values
606+
local actions = require 'telescope.actions'
607+
local action_state = require 'telescope.actions.state'
608+
local previewers = require 'telescope.previewers'
609+
-- print(vim.inspect(conf.file_sorter))
610+
-- local old_score_fn = conf.file_sorter.scoring_function
611+
-- conf.file_sorter.scoring_function = function(self, prompt, line)
612+
-- print('score', prompt, line)
613+
-- -- return old_score_fn(self, prompt, line)
614+
-- return -1
615+
-- end
603616
vim.keymap.set('n', '<leader>sh', builtin.help_tags, { desc = '[S]earch [H]elp' })
604617
vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
605618
vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' })
@@ -651,11 +664,6 @@ require('lazy').setup({
651664
end
652665
-- our picker ffunction: colors
653666
local colors = function(opts)
654-
local pickers = require 'telescope.pickers'
655-
local finders = require 'telescope.finders'
656-
local conf = require('telescope.config').values
657-
local actions = require 'telescope.actions'
658-
local action_state = require 'telescope.actions.state'
659667
opts = opts or {}
660668
pickers
661669
.new(opts, {
@@ -691,6 +699,34 @@ require('lazy').setup({
691699
colors()
692700
end, { desc = '[S]earch [G]rep directory' })
693701

702+
local utils = require 'telescope.utils'
703+
vim.keymap.set('n', '<leader>dd', function()
704+
local opts = {
705+
entry_maker = function(entry)
706+
return {
707+
value = entry,
708+
display = entry,
709+
ordinal = entry,
710+
}
711+
end,
712+
}
713+
opts.cwd = opts.cwd and utils.path_expand(opts.cwd) or vim.loop.cwd()
714+
715+
local live_grepper = finders.new_job(function(prompt)
716+
local term = prompt == '' and '.' or prompt
717+
local git_cmd = utils.__git_command { 'diff-index', '-U0', '--name-only', '-G', term, 'HEAD' }
718+
return git_cmd
719+
end, opts.entry_maker, opts.max_results, opts.cwd)
720+
721+
pickers
722+
.new(opts, {
723+
prompt_title = 'grep git diff',
724+
finder = live_grepper,
725+
previewer = previewers.git_file_diff.new(opts),
726+
})
727+
:find()
728+
end, { desc = 'grep git diff' })
729+
694730
-- vim.keymap.set('n', '<leader>gd', function()
695731
-- local out = vim.system({ 'git', 'status', '-s' }):wait()
696732
-- print(vim.inspect(out.stdout))

0 commit comments

Comments
 (0)