108 lines
2.9 KiB
Lua
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' })
|