return { "nvim-telescope/telescope.nvim", dependencies = { { "nvim-lua/plenary.nvim" }, { "nvim-telescope/telescope-fzf-native.nvim" }, { "nvim-telescope/telescope-ui-select.nvim" }, }, 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" }, mappings = { i = { [""] = "move_selection_next", [""] = "move_selection_previous", }, }, 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", }, { "fj", function() require("telescope.builtin").current_buffer_fuzzy_find() end, desc = "Fuzzy find/search in current buffer fuzzy.", }, { "ff", function() require("telescope.builtin").find_files({ hidden = 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, }) 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 Commands", }, { "fb", function() require("telescope.builtin").buffers() end, desc = "Find Commands", }, { "lfr", function() require("telescope.builtin").lsp_references() end, desc = "Find References", mode = { "n", "v", "x" }, }, }, }