return { "nvim-telescope/telescope.nvim", dependencies = { { "nvim-lua/plenary.nvim" }, { "nvim-telescope/telescope-fzf-native.nvim", event = "VeryLazy" }, { "nvim-telescope/telescope-ui-select.nvim", event = "VeryLazy" }, { "aznhe21/actions-preview.nvim", event = "VeryLazy" }, }, init = function() U.cmd_executable("rg", { [false] = function() vim.notify("rg not installed, live grep will not function.", 2) end, }) end, cmd = "Telescope", opts = function() return { pickers = { buffers = { sort_lastused = true, }, find_files = { hidden = true, sort_lastused = true, }, live_grep = { hidden = true, }, }, defaults = { file_ignore_patterns = { "node_modules$", "package-lock.json", "target$", ".git", ".direnv", ".pytest_cache", "__pycache__", ".venv", "venv$", ".mypy_cache", "dist$", "build$", "poackage-lock.json", ".aider*", }, mappings = { i = { [""] = "move_selection_next", [""] = "move_selection_previous", [""] = false, [""] = false, [""] = false, [""] = false, [""] = false, [""] = false, }, }, vimgrep_arguments = { "rg", "--hidden", "--color=never", "--no-heading", "--with-filename", "--line-number", "--column", "--smart-case", }, }, extensions = { ["ui-select"] = { require("telescope.themes").get_cursor(), }, ["notify"] = {}, }, } end, config = function(_, opts) local ts = require("telescope") ts.setup(opts) ts.load_extension("ui-select") if package.loaded["notify"] then ts.load_extension("notify") U.keymaps({ { "fn", "Telescope notify", desc = "Telescope search notifications", mode = { "n", "v", "x" }, }, }) end end, -- https://github.com/nvim-telescope/telescope.nvim?tab=readme-ov-file#pickers keys = { { "fr", function() require("telescope.builtin").resume() end, desc = "Resume last telescope", }, { "f/", function() require("telescope.builtin").current_buffer_fuzzy_find( require("telescope.themes").get_dropdown({ winblend = 10, previewer = false }) ) end, desc = "Fuzzy find/search in current buffer fuzzy.", }, { "fh", function() require("telescope.builtin").help_tags() end, desc = "Find help", }, { "ff", function() require("telescope.builtin").find_files({ hidden = true, follow = true, no_ignore = true, no_ignore_parent = true, }) end, desc = "Find Files", }, { "fg", function() require("telescope.builtin").git_files({ hidden = true, }) end, desc = "Find Git only Files", }, { "fw", function() U.cmd_executable("rg", { function() require("telescope.builtin").live_grep({ hidden = true, follow = true, no_ignore = true, no_ignore_parent = true, }) end, function() vim.notify("rg not installed, find words will not function.", 3) end, }) end, desc = "Find Words", }, { "fc", function() require("telescope.builtin").commands() end, desc = "Find Commands", }, { "fk", function() require("telescope.builtin").keymaps() end, desc = "Find Keymap", }, { "fb", function() require("telescope.builtin").buffers() end, desc = "Find Buffer", }, { "lfr", function() require("telescope.builtin").lsp_references() end, desc = "Find LSP References", mode = { "n", "v", "x" }, }, }, }