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,
},
}