dotfiles/nvim/lua/telescope/custom.lua
2023-04-15 23:44:32 +02:00

100 lines
2.4 KiB
Lua

local actions = require("telescope.actions")
local action_state = require "telescope.actions.state"
local interactive_rebase = function(prompt_bufnr)
local selection = action_state.get_selected_entry()
-- Use vim-fugitive for the rebase
vim.cmd('Git rebase -i ' .. selection.name)
end
require("telescope").setup{
extensions = {
coc = {
theme = 'ivy',
prefer_locations = true, -- always use Telescope locations to preview definitions/declarations/implementations etc
}
},
defaults = {
mappings = {
i = {
["<esc>"] = actions.close,
["<C-u>"] = false
},
},
theme = "ivy",
},
pickers = {
git_branches = {
mappings = {
i = {
["<C-b>"] = interactive_rebase
},
},
},
},
}
-- Implement delta as previewer for diffs
local previewers = require('telescope.previewers')
local builtin = require('telescope.builtin')
local conf = require('telescope.config')
local E = {}
local delta = previewers.new_termopen_previewer {
get_command = function(entry)
-- this is for status
-- You can get the AM things in entry.status. So we are displaying file if entry.status == '??' or 'A '
-- just do an if and return a different command
if entry.status == '??' or 'A ' then
return { 'git', '-c', 'core.pager=delta', '-c', 'delta.side-by-side=false', 'diff', entry.value }
end
-- note we can't use pipes
-- this command is for git_commits and git_bcommits
return { 'git', '-c', 'core.pager=delta', '-c', 'delta.side-by-side=false', 'diff', entry.value .. '^!' }
end
}
E.my_git_commits = function(opts)
opts = opts or {}
opts.previewer = delta
builtin.git_commits(opts)
end
E.my_git_bcommits = function(opts)
opts = opts or {}
opts.previewer = delta
builtin.git_bcommits(opts)
end
E.my_git_status = function(opts)
opts = opts or {}
opts.previewer = delta
builtin.git_status(opts)
end
E.my_git_branches = function(opts)
opts = opts or {}
opts.previewer = delta
builtin.git_branches(opts)
end
E.project_files = function()
local opts = {} -- define here if you want to define something
vim.fn.system('git rev-parse --is-inside-work-tree')
if vim.v.shell_error == 0 then
require"telescope.builtin".git_files(opts)
else
require"telescope.builtin".find_files(opts)
end
end
return E