return { 'nvim-telescope/telescope.nvim', event = 'VimEnter', branch = '0.1.x', dependencies = { 'nvim-lua/plenary.nvim', { -- If encountering errors, see telescope-fzf-native README for installation instructions 'nvim-telescope/telescope-fzf-native.nvim', -- `build` is used to run some command when the plugin is installed/updated. -- This is only run then, not every time Neovim starts up. build = 'make', -- `cond` is a condition used to determine whether this plugin should be -- installed and loaded. cond = function() return vim.fn.executable 'make' == 1 end, }, { 'nvim-telescope/telescope-ui-select.nvim' }, -- Useful for getting pretty icons, but requires a Nerd Font. { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font }, }, config = function() -- Telescope is a fuzzy finder that comes with a lot of different things that -- it can fuzzy find! It's more than just a "file finder", it can search -- many different aspects of Neovim, your workspace, LSP, and more! -- -- The easiest way to use Telescope, is to start by doing something like: -- :Telescope help_tags -- -- After running this command, a window will open up and you're able to -- type in the prompt window. You'll see a list of `help_tags` options and -- a corresponding preview of the help. -- -- Two important keymaps to use while in Telescope are: -- - Insert mode: -- - Normal mode: ? -- -- This opens a window that shows you all of the keymaps for the current -- Telescope picker. This is really useful to discover what Telescope can -- do as well as how to actually do it! -- [[ Configure Telescope ]] -- See `:help telescope` and `:help telescope.setup()` require('telescope').setup { -- You can put your default mappings / updates / etc. in here -- All the info you're looking for is in `:help telescope.setup()` -- defaults = { -- mappings = { -- i = { [''] = 'to_fuzzy_refine' }, -- }, -- }, layout_strategy = 'horizontal', pickers = { current_buffer_fuzzy_find = { theme = 'ivy', previewer = false, }, buffers = { sort_lastused = true, -- theme = "dropdown", theme = 'ivy', layout_config = { height = 10 }, previewer = false, mappings = { i = { [''] = require('telescope.actions').delete_buffer }, n = { [''] = require('telescope.actions').delete_buffer }, }, }, find_files = { theme = 'ivy', layout_config = { height = 10 }, previewer = false, }, oldfiles = { sort_lastused = true, theme = 'ivy', layout_config = { height = 10 }, previewer = false, }, command_history = { sort_lastused = true, theme = 'ivy', layout_config = { height = 10 }, previewer = false, }, }, --[[ layout_config = { width = function(_, max_columns) local percentage = 0.7 local max = 70 return math.min(math.floor(percentage * max_columns), max) end, height = function(_, _, max_lines) local percentage = 0.7 local min = 70 return math.max(math.floor(percentage * max_lines), min) end, -- preview_cutoff = 120, }, --]] --[[ layout_config = { -- defaults = { layout_strategy = 'vertical', height = vim.o.lines, -- maximally available lines width = vim.o.columns, -- maximally available columns prompt_position = 'top', -- preview_height = 0.6, -- 60% of available lines }, --]] }, extensions = { ['ui-select'] = { require('telescope.themes').get_dropdown(), }, }, } -- Enable Telescope extensions if they are installed pcall(require('telescope').load_extension, 'fzf') pcall(require('telescope').load_extension, 'ui-select') -- See `:help telescope.builtin` local builtin = require 'telescope.builtin' vim.keymap.set('n', 'fc', builtin.colorscheme, { desc = '[S]earch [C]colorscheme' }) -- vim.keymap.set('n', 'fh', builtin.help_tags, { desc = '[S]earch [H]elp' }) -- vim.keymap.set('n', 'fk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) vim.keymap.set('n', 'ff', builtin.find_files, { desc = '[S]earch [F]iles' }) -- vim.keymap.set('n', 'fs', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) vim.keymap.set('n', 'fw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) -- vim.keymap.set('n', 'fg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) -- vim.keymap.set('n', 'fd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) vim.keymap.set('n', 'fr', builtin.resume, { desc = '[S]earch [R]esume' }) vim.keymap.set('n', 'f.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) -- Slightly advanced example of overriding default behavior and theme -- vim.keymap.set('n', '/', builtin.current_buffer_fuzzy_find, { desc = '[/] Fuzzily search in current buffer' }) vim.keymap.set('n', '/', function() builtin.current_buffer_fuzzy_find { previewer = false, } end, { desc = '[/] Fuzzily search in current buffer' }) -- It's also possible to pass additional configuration options. -- See `:help telescope.builtin.live_grep()` for information about particular keys vim.keymap.set('n', '', function() builtin.live_grep { grep_open_files = true, prompt_title = 'Live Grep in Open Files', } end, { desc = '[S]earch [/] in Open Files' }) -- Shortcut for searching your Neovim configuration files vim.keymap.set('n', 'sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' }) end, }