local M = { 'nvim-telescope/telescope.nvim', dependencies = { 'nvim-lua/plenary.nvim' }, lazy = true, cmd = 'Telescope', } function M.config() local telescope = require 'telescope' local actions = require 'telescope.actions' require 'telescope'.setup { defaults = { path_display = { 'filename_first' }, layout_strategy = 'horizontal', layout_config = { prompt_position = 'top', width = function(_, max_columns, _) return math.min(max_columns, 180) end, horizontal = { preview_width = 0.5, }, }, sorting_strategy = 'ascending', scroll_strategy = 'limit', mappings = { n = { [''] = actions.close, ['q'] = actions.close, }, }, }, pickers = { find_files = { hidden = true, }, live_grep = { disable_coordinates = true, }, grep_string = { disable_coordinates = true, }, }, extensions = { file_browser = { git_icons = { added = 'A', changed = 'M', copied = 'C', deleted = 'D', renamed = 'R', unmerged = 'U', untracked = '?', }, }, }, } telescope.load_extension 'ui-select' end M.keymap = function() local builtin = require 'telescope.builtin' vim.keymap.set('n', 'f', builtin.find_files, { desc = 'Find files' }) vim.keymap.set('n', 'r', builtin.resume, { desc = 'Resume last search' }) vim.keymap.set('n', '', function() builtin.grep_string { word_match = '-w' } end, { desc = 'Find word under cursor' }) vim.keymap.set('v', '', builtin.grep_string, { desc = 'Find visual selection' }) vim.keymap.set('n', 'st', builtin.live_grep, { desc = 'Search for text in files' }) vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = 'List diagnostics' }) vim.keymap.set('n', 'o', builtin.lsp_document_symbols, { desc = 'List document symbols' }) vim.keymap.set('n', 'p', builtin.lsp_workspace_symbols, { desc = 'List workspace symbols' }) vim.keymap.set('n', 'gb', builtin.git_branches, { desc = 'List git branches' }) vim.keymap.set('n', 'gc', builtin.git_commits, { desc = 'List git commits' }) vim.keymap.set('n', '', function() builtin.git_status { max_results = 10000, temp__scrolling_limit = 10000, } end, { desc = 'Git status' }) end return M