return { { "unblevable/quick-scope", init = function() vim.g.qs_highlight_on_keys = { "f", "F", "t", "T" } vim.cmd([[ highlight QuickScopePrimary guifg='#afff5f' gui=underline ctermfg=155 cterm=underline highlight QuickScopeSecondary guifg='#00C7DF' gui=underline ctermfg=81 cterm=underline ]]) end, }, { "folke/flash.nvim", event = "VeryLazy", ---@type Flash.Config opts = { highlight = { backdrop = false }, modes = { char = { enabled = false } }, }, -- stylua: ignore keys = { { "j", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash jump" }, { "cH", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Highlight a code block" }, }, }, { "nvim-neo-tree/neo-tree.nvim", keys = { { "", "Neotree toggle left", desc = "Open NeoTree Explorer at Git root", remap = true }, }, deactivate = function() vim.cmd([[Neotree close]]) end, opts = { enable_git_status = true, filesystem = { bind_to_cwd = true, follow_current_file = { enabled = true, -- Highlight the current buffer leave_dirs_open = false, }, use_libuv_file_watcher = true, -- Sync file system changes filtered_items = { visible = true, show_hidden_count = true, hide_dotfile = false, hide_gitignore = false, }, }, window = { position = "left", width = 30, -- Saner window size mappings = { ["s"] = "open_split", ["v"] = "open_vsplit", ["Y"] = function(state) -- Copy file's path to + register local node = state.tree:get_node() local path = node:get_id() vim.fn.setreg("+", path, "c") end, }, }, default_component_configs = { indent = { indent_size = 2, with_expanders = true, -- if nil and file nesting is enabled, will enable expanders expander_collapsed = "", expander_expanded = "", expander_highlight = "NeoTreeExpander", }, }, sources = { "filesystem", "buffers", "git_status", "document_symbols" }, open_files_do_not_replace_types = { "terminal", "Trouble", "trouble", "qf", "Outline" }, }, config = function(_, opts) require("neo-tree").setup(opts) end, }, { "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim", { "nvim-telescope/telescope-fzf-native.nvim", build = "make", cond = function() return vim.fn.executable("make") == 1 end, }, "nvim-telescope/telescope-ui-select.nvim", { "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font, }, }, config = function() local telescopeConfig = require("telescope.config") -- Use this filter for both default search & picker search local filters = { "--hidden", "--glob", "!**/.git/*", "--glob", "!**/node_modules/*", "--glob", "!**/target/*", } local vimgrep_arguments = { unpack(telescopeConfig.values.vimgrep_arguments) } for i = 1, #filters do vimgrep_arguments[#vimgrep_arguments + 1] = filters[i] end require("telescope").setup({ defaults = { hidden = true, vimgrep_arguments = vimgrep_arguments, mappings = { i = { [""] = false, [""] = false, }, }, }, pickers = { colorscheme = { enable_preview = true }, find_files = { hidden = true, find_command = { unpack(telescopeConfig.values.vimgrep_arguments), "--files", unpack(filters), }, }, }, extensions = { ["ui-select"] = { require("telescope.themes").get_dropdown(), }, }, }) pcall(require("telescope").load_extension, "fzf") pcall(require("telescope").load_extension, "ui-select") -- Buffer vim.keymap.set("n", "bl", require("telescope.builtin").buffers, { desc = "List Buffers" }) -- TIP: Needs terminal (kitty) configured to send correct key code to NeoVim: \x1b[70;5u vim.keymap.set("n", "", require("telescope.builtin").live_grep, { desc = "Search/LiveGrep the Project" }) -- List vim.keymap.set("n", "", require("telescope.builtin").find_files, { desc = "Search Files" }) -- Git vim.keymap.set("n", "gc", require("telescope.builtin").git_commits, { desc = "Git: Commits" }) vim.keymap.set("n", "gb", require("telescope.builtin").git_branches, { desc = "Git: Branches" }) -- Neovim Things vim.keymap.set("n", "nh", require("telescope.builtin").help_tags, { desc = "Search NeoVIM Help" }) vim.keymap.set("n", "nm", require("telescope.builtin").man_pages, { desc = "Help: System Man Pages" }) vim.keymap.set("n", "nv", require("telescope.builtin").vim_options, { desc = "Help: Vim Options" }) vim.keymap.set("n", "nk", require("telescope.builtin").keymaps, { desc = "Help: NeoVIM Keymaps" }) vim.keymap.set("n", "ns", require("telescope.builtin").search_history, { desc = "Search History" }) vim.keymap.set("n", "nH", require("telescope.builtin").command_history, { desc = "Command History" }) vim.keymap.set("n", "nc", require("telescope.builtin").colorscheme, { desc = "Colorschemes (with preview)" }) end, }, }