-- Telescope Configuration local M = {} function M.setup() local telescope = require('telescope') local builtin = require('telescope.builtin') telescope.setup({ defaults = { prompt_prefix = '> ', selection_caret = '> ', path_display = { 'truncate' }, sorting_strategy = 'ascending', layout_config = { horizontal = { prompt_position = 'top', preview_width = 0.55, }, vertical = { mirror = false, }, width = 0.87, height = 0.80, preview_cutoff = 120, }, }, pickers = { find_files = { -- Use rg for finding files (ensure rg is installed via Nix/Home Manager) find_command = { 'rg', '--files', '--hidden', '-g', '!.git' }, }, }, extensions = { ['ui-select'] = { require('telescope.themes').get_dropdown(), }, fzf = { fuzzy = true, override_generic_sorter = true, override_file_sorter = true, case_mode = 'smart_case', }, }, }) -- Load extensions pcall(telescope.load_extension, 'fzf') pcall(telescope.load_extension, 'ui-select') -- Setup keymaps vim.keymap.set('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) vim.keymap.set('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) vim.keymap.set('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) 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', '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)' }) vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) -- Fuzzy search in current buffer vim.keymap.set('n', '/', function() builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { winblend = 10, previewer = false, }) end, { desc = '[/] Fuzzily search in current buffer' }) -- Search in open files vim.keymap.set('n', 's/', function() builtin.live_grep { grep_open_files = true, prompt_title = 'Live Grep in Open Files', } end, { desc = '[S]earch [/] in Open Files' }) -- Search in neovim config vim.keymap.set('n', 'sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' }) -- C/C++ compile_commands.json picker vim.keymap.set('n', 'sc', 'CompileCommandsPicker', { desc = '[S]earch [C]ompile commands.json' }) end return M