local Util = require("lazyvim.util") return { { "nvim-telescope/telescope.nvim", commit = vim.fn.has("nvim-0.9.0") == 0 and "057ee0f8783" or nil, cmd = "Telescope", version = false, -- telescope did only one release, so use HEAD for now dependencies = { { "nvim-telescope/telescope-fzf-native.nvim", build = "make", enabled = vim.fn.executable("make") == 1, config = function() Util.on_load("telescope.nvim", function() require("telescope").load_extension("fzf") end) end, }, { "debugloop/telescope-undo.nvim", opts = {}, config = function(_, opts) Util.on_load("telescope.nvim", function() require("telescope").load_extension("undo") end) end, }, { "prochri/telescope-all-recent.nvim", opts = { pickers = { ["workspaces.nvim#workspaces"] = { disable = false, sorting = "frecency", }, ["project.nvim#projects"] = { disable = false, sorting = "frecency", }, ["yanky.nvim#yank_history"] = { disable = true, }, ["zoxide.nvim#zoxide"] = { disable = true, }, }, }, }, { "benfowler/telescope-luasnip.nvim", config = function() Util.on_load("telescope.nvim", function() require("telescope").load_extension("luasnip") end) end, }, { "piersolenski/telescope-import.nvim", config = function(_, opts) Util.on_load("telescope.nvim", function() require("telescope").load_extension("import") end) end, }, { "jvgrootveld/telescope-zoxide", config = function() Util.on_load("telescope.nvim", function() require("telescope").load_extension("zoxide") end) end, }, { "tsakirist/telescope-lazy.nvim", config = function() Util.on_load("telescope.nvim", function() require("telescope").load_extension("lazy") end) end, }, }, keys = { { ",", "Telescope buffers show_all_buffers=true", desc = "Switch Buffer", }, { "/", Util.telescope("live_grep"), desc = "Grep (root dir)", }, { ":", "Telescope command_history", desc = "Command History", }, { "", Util.telescope("files"), desc = "Find Files (root dir)", }, -- find { "fb", "Telescope buffers", desc = "Buffers" }, { "ff", Util.telescope("files"), desc = "Find Files (root dir)", }, { "fF", Util.telescope("files", { cwd = false }), desc = "Find Files (cwd)", }, { "fr", "Telescope oldfiles", desc = "Recent" }, { "fR", Util.telescope("oldfiles", { cwd = vim.loop.cwd() }), desc = "Recent (cwd)" }, -- git { "gC", "Telescope git_commits", desc = "Commits" }, { "gs", "Telescope git_status", desc = "Status" }, -- search { 's"', "Telescope registers", desc = "Registers" }, { "sa", "Telescope autocommands", desc = "Auto Commands", }, { "sb", "Telescope current_buffer_fuzzy_find", desc = "Buffer" }, { "sc", "Telescope command_history", desc = "Command History", }, { "sC", "Telescope commands", desc = "Commands" }, { "sd", "Telescope diagnostics bufnr=0", desc = "Document diagnostics", }, { "sD", "Telescope diagnostics", desc = "Workspace diagnostics", }, { "sg", Util.telescope("live_grep"), desc = "Grep (root dir)", }, { "sG", Util.telescope("live_grep", { cwd = false }), desc = "Grep (cwd)" }, { "sh", "Telescope help_tags", desc = "Help Pages" }, { "sH", "Telescope highlights", desc = "Search Highlight Groups", }, { "sk", "Telescope keymaps", desc = "Key Maps" }, { "sM", "Telescope man_pages", desc = "Man Pages" }, { "sm", "Telescope marks", desc = "Jump to Mark" }, { "so", "Telescope vim_options", desc = "Options" }, { "sR", "Telescope resume", desc = "Resume" }, { "cu", "Telescope undo", desc = "Undotree" }, { "sw", Util.telescope("grep_string", { word_match = "-w" }), desc = "Word (root dir)", }, { "sW", Util.telescope("grep_string", { cwd = false, word_match = "-w" }), desc = "Word (cwd)" }, { "sw", Util.telescope("grep_string"), mode = "v", desc = "Selection (root dir)", }, { "sW", Util.telescope("grep_string", { cwd = false }), mode = "v", desc = "Selection (cwd)", }, { "uC", Util.telescope("colorscheme", { enable_preview = true }), desc = "Colorscheme with preview", }, { "ssa", Util.telescope("lsp_document_symbols", { symbols = { "Class", "Function", "Method", "Constructor", "Interface", "Module", "Struct", "Trait", "Field", "Property", "Enum", "Constant", }, }), desc = "All", }, { "ssc", Util.telescope("lsp_document_symbols", { symbols = { "Class", }, }), desc = "Class", }, { "ssf", Util.telescope("lsp_document_symbols", { symbols = { "Function", }, }), desc = "Function", }, { "ssm", Util.telescope("lsp_document_symbols", { symbols = { "Method", }, }), desc = "Method", }, { "ssC", Util.telescope("lsp_document_symbols", { symbols = { "Constructor", }, }), desc = "Constructor", }, { "sse", Util.telescope("lsp_document_symbols", { symbols = { "Enum", }, }), desc = "Enum", }, { "ssi", Util.telescope("lsp_document_symbols", { symbols = { "Interface", }, }), desc = "Interface", }, { "ssM", Util.telescope("lsp_document_symbols", { symbols = { "Module", }, }), desc = "Module", }, { "sss", Util.telescope("lsp_document_symbols", { symbols = { "Struct", }, }), desc = "Struct", }, { "sst", Util.telescope("lsp_document_symbols", { symbols = { "Trait", }, }), desc = "Trait", }, { "ssF", Util.telescope("lsp_document_symbols", { symbols = { "Field", }, }), desc = "Field", }, { "ssp", Util.telescope("lsp_document_symbols", { symbols = { "Property", }, }), desc = "Property", }, { "ssv", Util.telescope("lsp_document_symbols", { symbols = { "Variable", "Parameter", }, }), desc = "Variable", }, { "sSa", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Class", "Function", "Method", "Constructor", "Interface", "Module", "Struct", "Trait", "Field", "Property", "Enum", "Constant", }, }), desc = "All", }, { "sSc", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Class", }, }), desc = "Class", }, { "sSf", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Function", }, }), desc = "Function", }, { "sSm", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Method", }, }), desc = "Method", }, { "sSC", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Constructor", }, }), desc = "Constructor", }, { "sSe", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Enum", }, }), desc = "Enum", }, { "sSi", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Interface", }, }), desc = "Interface", }, { "sSM", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Module", }, }), desc = "Module", }, { "sSs", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Struct", }, }), desc = "Struct", }, { "sSt", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Trait", }, }), desc = "Trait", }, { "sSF", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Field", }, }), desc = "Field", }, { "sSp", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Property", }, }), desc = "Property", }, { "sSv", Util.telescope("lsp_dynamic_workspace_symbols", { symbols = { "Variable", "Parameter", }, }), desc = "Variable", }, { "sA", Util.telescope("treesitter"), desc = "Treesitter Symbols", }, }, opts = function() local actions = require("telescope.actions") local open_with_trouble = function(...) return require("trouble.providers.telescope").open_with_trouble(...) end local open_selected_with_trouble = function(...) return require("trouble.providers.telescope").open_selected_with_trouble(...) end local find_files_no_ignore = function() local action_state = require("telescope.actions.state") local line = action_state.get_current_line() Util.telescope("find_files", { no_ignore = true, default_text = line })() end local find_files_with_hidden = function() local action_state = require("telescope.actions.state") local line = action_state.get_current_line() Util.telescope("find_files", { hidden = true, default_text = line })() end return { defaults = { prompt_prefix = " ", selection_caret = " ", -- open files in the first window that is an actual file. -- use the current window if no other window is available. get_selection_window = function() local wins = vim.api.nvim_list_wins() table.insert(wins, 1, vim.api.nvim_get_current_win()) for _, win in ipairs(wins) do local buf = vim.api.nvim_win_get_buf(win) if vim.bo[buf].buftype == "" then return win end end return 0 end, mappings = { i = { [""] = open_with_trouble, [""] = open_selected_with_trouble, [""] = find_files_no_ignore, [""] = find_files_with_hidden, [""] = actions.cycle_history_next, [""] = actions.cycle_history_prev, [""] = actions.preview_scrolling_down, [""] = actions.preview_scrolling_up, [""] = actions.move_selection_previous, [""] = actions.move_selection_next, [""] = actions.send_selected_to_qflist + actions.open_qflist, [""] = actions.close, [""] = false, [""] = actions.delete_buffer + actions.move_to_top, }, n = { ["q"] = actions.close, }, }, file_ignore_patterns = { ".gitignore", "node_modules", "build", "dist", "yarn.lock", "*.git/*", "*/tmp/*", }, pickers = { find_files = { hidden = true, }, }, extensions = { undo = { side_by_side = true, layout_strategy = "vertical", layout_config = { preview_height = 0.65, }, }, import = { insert_at_top = true, }, fzf = { fuzzy = true, override_generic_sorter = true, override_file_sorter = true, case_mode = "smart_case", }, }, }, require("telescope").load_extension("refactoring"), } end, }, }