return { { "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim", { "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 }, }, cmd = "Telescope", keys = { { "ff", function() require("telescope.builtin").find_files() end, desc = "[ F ]ind files", }, { "fF", function() require("telescope.builtin").find_files({ hidden = true, no_ignore = true }) end, desc = "[ F ]ind [ F ]iles", }, { "lg", function() require("telescope.builtin").live_grep() end, desc = "Live grep", }, { "gf", function() require("telescope.builtin").git_files() end, desc = "Git files", }, { "gs", function() require("telescope.builtin").git_status() end, desc = "Git status", }, { "fc", function() require("telescope.builtin").git_commits() end, desc = "Git Commits", }, { "of", function() require("telescope.builtin").oldfiles() end, desc = "[ O ]ld [ F ]iles", }, { "ds", function() require("telescope.builtin").lsp_document_symbols() end, desc = "[ D ]ocument [ S ]ymbols", }, { "wss", function() require("telescope.builtin").lsp_dynamic_workspace_symbols() end, desc = "[ W ]orkspace [ S ]ymbol[ s ]", remap = true, }, { "lr", function() require("telescope.builtin").lsp_references() end, desc = "[L]ist [R]erefrences", }, { "ld", function() require("telescope.builtin").diagnostics() end, desc = "[ L ]ist [ D ]iagnostics", }, { "li", function() require("telescope.builtin").lsp_implementations() end, desc = "[ L ]ist [ I ]mplementation", }, { "ldi", function() require("telescope.builtin").lsp_definitions() end, desc = "[ L ]ist [ D ]ef[ i ]nitions", }, { "bff", function() require("telescope.builtin").current_buffer_fuzzy_find() end, desc = "[ L ]ist [ D ]ef[ i ]nitions", }, }, config = function(_, opts) local telescope = require("telescope") local builtin = require("telescope.builtin") telescope.setup({ extensions = { ["ui-select"] = { require("telescope.themes").get_dropdown(), }, }, defaults = { prompt_prefix = "", selection_caret = "", sorting_strategy = "ascending", path_display = { "smart", }, layout_config = { horizontal = { prompt_position = "top", width = 0.75, height = 0.65, preview_width = 0.6, }, }, mappings = { i = { [""] = function(...) require("telescope.actions").move_selection_previous(...) end, [""] = function(...) require("telescope.actions").move_selection_next(...) end, [""] = function(...) require("trouble.providers.telescope").open_with_trouble(...) end, }, n = { q = function(...) require("telescope.actions").close(...) end, [""] = function(...) require("trouble.providers.telescope").open_with_trouble(...) end, }, }, }, }) pcall(telescope.load_extension, "tnf") pcall(telescope.load_extension, "fzf") pcall(telescope.load_extension, "ui-select") vim.keymap.set("n", "/", function() -- You can pass additional configuration to Telescope to change the theme, layout, etc. builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({ winblend = 10, previewer = false, })) end, { desc = "[/] Fuzzily search in current buffer" }) 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" }) vim.keymap.set("n", "sn", function() builtin.find_files({ cwd = vim.fn.stdpath("config") }) end, { desc = "[S]earch [N]eovim files" }) end, }, }