return { { -- Fuzzy Finder (files, lsp, etc) "nvim-telescope/telescope.nvim", -- event = 'VimEnter', -- branch = "0.1.x", dependencies = { "nvim-treesitter/nvim-treesitter", "joshmedeski/telescope-smart-goto.nvim", "nvim-telescope/telescope-ui-select.nvim", "nvim-lua/plenary.nvim", "nanotee/zoxide.vim", "debugloop/telescope-undo.nvim", "nvim-telescope/telescope-live-grep-args.nvim", "nvim-telescope/telescope-fzy-native.nvim", { "nvim-telescope/telescope-fzf-native.nvim", build = "make", }, "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()` local open_with_trouble = require("trouble.sources.telescope").open -- Use this to add more results without clearing the trouble list local add_to_trouble = require("trouble.sources.telescope").add local action_layout = require("telescope.actions.layout") 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 = { vimgrep_arguments = { "rg", "-L", "--color=never", "--no-heading", "--with-filename", "--line-number", "--column", "--smart-case", }, prompt_prefix = "  ", layout_strategy = "horizontal", sorting_strategy = "ascending", selection_strategy = "reset", initial_mode = "insert", layout_config = { horizontal = { prompt_position = "top", preview_width = 0.60, results_width = 0.8, }, vertical = { mirror = false, }, width = 0.88, height = 0.80, preview_cutoff = 120, }, -- theme = "ivy", mappings = { i = { [""] = "to_fuzzy_refine", [""] = open_with_trouble, [""] = add_to_trouble, }, n = { [""] = open_with_trouble, [""] = add_to_trouble, [""] = action_layout.toggle_preview, }, }, buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker, }, file_sorter = require("telescope.sorters").get_fuzzy_file, file_ignore_patterns = { "node_modules" }, generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter, path_display = { "truncate" }, winblend = 0, pickers = { find_files = { -- theme = "ivy", }, help_tags = { -- theme = "ivy", }, colorscheme = { theme = "dropdown", enable_preview = true, }, keymap = { -- theme = "ivy", theme = "dropdown" }, oldfiles = { -- theme = "ivy", enable_preview = false, }, buffers = { -- theme = "ivy", enable_preview = false, }, git_status = { -- theme = "ivy", }, git_commit = { -- theme = "ivy", } }, -- pickers = {} extensions = { fzf = { fuzzy = true, -- false will only do exact matching override_generic_sorter = true, -- override the generic sorter override_file_sorter = true, -- override the file sorter case_mode = "smart_case", -- or "ignore_case" or "respect_case" -- the default case_mode is "smart_case" }, ["ui-select"] = { require("telescope.themes").get_ivy(), }, }, }) -- Enable Telescope extensions if they are installed pcall(require("telescope").load_extension, "fzf") pcall(require("telescope").load_extension, "ui-select") pcall(require("telescope").load_extension, "man_pages") -- See `:help telescope.builtin` local builtin = require("telescope.builtin") local actions = require("telescope.actions") vim.keymap.set("n", "s?", builtin.help_tags, { desc = "Help" }) vim.keymap.set("n", "sk", builtin.keymaps, { desc = "[k]eymaps" }) vim.keymap.set("n", "sf", builtin.find_files, { desc = "[f]iles" }) vim.keymap.set("n", "so", builtin.oldfiles, { desc = "[o]ld Files" }) vim.keymap.set("n", "ss", builtin.builtin, { desc = "[s]elect Telescope" }) vim.keymap.set("n", "sw", builtin.grep_string, { desc = "current [w]ord" }) vim.keymap.set("n", "sg", builtin.live_grep, { desc = "[g]rep" }) vim.keymap.set("n", "sd", builtin.lsp_document_symbols, { desc = "[d]ocument symbols" }) vim.keymap.set("n", "sW", builtin.lsp_workspace_symbols, { desc = "[W]workspace symbols" }) vim.keymap.set("n", "sr", builtin.lsp_references, { desc = "[r]eferences" }) vim.keymap.set("n", "sD", builtin.diagnostics, { desc = "[D]iagnostics" }) vim.keymap.set("n", "sr", builtin.resume, { desc = "[r]esume" }) vim.keymap.set("n", "sb", builtin.buffers, { desc = "Find existing [B]uffers" }) vim.keymap.set("n", "sc", builtin.current_buffer_fuzzy_find, { desc = "Find current buffers" }) vim.keymap.set("n", "sS", builtin.git_status, { desc = "Git [S]tatus" }) vim.keymap.set("n", "sC", builtin.git_commits, { desc = "Git [C]ommit" }) vim.keymap.set("n", "sG", builtin.git_files, { desc = "Git file" }) vim.keymap.set("n", "sM", builtin.man_pages, { desc = "[M]anPages" }) vim.keymap.set("n", "sm", builtin.marks, { desc = "[m]arks" }) vim.keymap.set("n", "sR", builtin.registers, { desc = "[R]egisters" }) -- Slightly advanced example of overriding default behavior and theme vim.keymap.set("n", "sz", function() -- You can pass additional configuration to Telescope to change the theme, layout, etc. builtin.current_buffer_fuzzy_find(require("telescope.themes").get_ivy({ winblend = 10, 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", "t/", 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", "tn", function() builtin.find_files({ cwd = vim.fn.stdpath("config") }) end, { desc = "[S]earch [N]eovim files" }) vim.keymap.set("n", "tc", "Telescope themes ", { desc = "Color scheme" }) end, }, }