Files
dotfiles/nvim/lua/tracer/plugins/telescope.lua
T

108 lines
2.9 KiB
Lua

local actions = require('telescope.actions')
local action_state = require('telescope.actions.state')
local builtin = require('telescope.builtin')
local telescope_state = require('telescope.state')
local function clear_prompt(prompt_bufnr)
local current_picker = action_state.get_current_picker(prompt_bufnr)
current_picker:reset_prompt()
end
local function resume_cached_picker(prompt_title, fallback)
local cached_pickers = telescope_state.get_global_key('cached_pickers') or {}
for index, picker in ipairs(cached_pickers) do
if picker.prompt_title == prompt_title then
builtin.resume({ cache_index = index })
return
end
end
fallback()
end
local function find_files()
resume_cached_picker('Files', function()
builtin.find_files()
end)
end
local function find_all_files()
resume_cached_picker('All Files', function()
builtin.find_files({
no_ignore = true,
prompt_title = 'All Files',
})
end)
end
vim.cmd([[
highlight link TelescopePromptTitle PMenuSel
highlight link TelescopePreviewTitle PMenuSel
highlight link TelescopePromptNormal NormalFloat
highlight link TelescopePromptBorder FloatBorder
highlight link TelescopeNormal CursorLine
highlight link TelescopeBorder CursorLineBg
]])
require('telescope').setup({
defaults = {
path_display = { truncate = 1 },
prompt_prefix = '',
selection_caret = ' ',
cache_picker = {
num_pickers = 10,
ignore_empty_prompt = true,
},
layout_config = {
prompt_position = 'top',
},
sorting_strategy = 'ascending',
mappings = {
i = {
['<esc>'] = actions.close,
['<M-n>'] = actions.cycle_history_next,
['<M-p>'] = actions.cycle_history_prev,
['<C-l>'] = clear_prompt,
},
n = {
['<M-n>'] = actions.cycle_history_next,
['<M-p>'] = actions.cycle_history_prev,
['<C-l>'] = clear_prompt,
},
},
file_ignore_patterns = { '.git/' },
},
pickers = {
find_files = {
hidden = true,
prompt_title = 'Files',
},
buffers = {
previewer = false,
layout_config = {
width = 80,
},
},
oldfiles = {
prompt_title = 'History',
},
lsp_references = {
previewer = false,
},
},
})
require('telescope').load_extension('fzf')
require('telescope').load_extension('live_grep_args')
vim.keymap.set('n', '<leader>f', find_files, { desc = 'Find files' })
vim.keymap.set('n', '<leader><leader>', find_files, { desc = 'Find files' })
vim.keymap.set('n', '<leader>F', find_all_files, { desc = 'Find all files' })
vim.keymap.set('n', '<leader>b', builtin.buffers, { desc = 'Find buffers' })
vim.keymap.set('n', '<leader>g', function()
require('telescope').extensions.live_grep_args.live_grep_args()
end, { desc = 'Live grep' })
vim.keymap.set('n', '<leader>h', builtin.oldfiles, { desc = 'Recent files' })
vim.keymap.set('n', '<leader>s', builtin.lsp_document_symbols, { desc = 'Document symbols' })