return { { "nvim-neo-tree/neo-tree.nvim", event = "VeryLazy", branch = "v3.x", dependencies = { "nvim-lua/plenary.nvim", "nvim-tree/nvim-web-devicons", "MunifTanjim/nui.nvim", }, config = function() vim.keymap.set("n", "ee", ":Neotree toggle", { desc = "Toggle Neotree" }) vim.keymap.set("n", "er", ":Neotree reveal", { desc = "Reveal file" }) local nt = require("neo-tree") nt.setup({ open_files_do_not_replace_types = { "terminal", "trouble", "qf" }, filesystem = { filtered_items = { show_hidden_count = false, hide_dotfiles = false, hide_gitignored = true, always_show = { ".env", ".env.local", }, never_show = { ".git", "thumbs.db", ".DS_Store", }, }, }, window = { mappings = { ["m"] = { "move", config = { show_path = "relative", }, }, }, }, event_handlers = { { event = "neo_tree_popup_input_ready", handler = function() -- Switch to normal inside popups by default. vim.cmd.stopinsert() end, }, }, }) end, }, { "folke/which-key.nvim", event = "VeryLazy", init = function() vim.o.timeout = true vim.o.timeoutlen = 300 end, opts = {}, }, { "folke/trouble.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, config = function() vim.keymap.set("n", "tt", ":TroubleToggle", { desc = "Toggle Trouble" }) end, }, { "folke/todo-comments.nvim", dependencies = { "nvim-lua/plenary.nvim" }, opts = {}, }, { "nvim-pack/nvim-spectre", dependencies = { "nvim-lua/plenary.nvim" }, opts = { open_cmd = "noswapfile vnew" }, keys = { { "sr", function() require("spectre").open() end, desc = "Replace in Files (Spectre)", }, }, }, { "nvim-telescope/telescope.nvim", tag = "0.1.5", dependencies = { "nvim-lua/plenary.nvim" }, config = function() local builtin = require("telescope.builtin") vim.keymap.set("n", "ff", builtin.git_files, { desc = "Search git_files" }) vim.keymap.set("n", "fg", builtin.live_grep, { desc = "Grep git_files" }) vim.keymap.set("n", "fh", builtin.help_tags, { desc = "View help tags" }) vim.keymap.set("n", "fb", builtin.buffers, { desc = "Search buffers" }) vim.keymap.set("n", "sk", builtin.keymaps, { desc = "View keymaps" }) vim.keymap.set("n", "sR", builtin.resume, { desc = "Resume" }) vim.keymap.set("n", "st", "TodoTelescope", { desc = "Search TODOs" }) end, }, { "nvim-telescope/telescope-ui-select.nvim", config = function() require("telescope").setup({ defaults = { initial_mode = "normal", }, extensions = { ["ui-select"] = { require("telescope.themes").get_dropdown({}), }, }, }) require("telescope").load_extension("ui-select") end, }, { "folke/flash.nvim", event = "VeryLazy", ---@type Flash.Config opts = {}, -- stylua: ignore keys = { { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" }, { "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" }, { "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" }, { "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" }, { "", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" }, }, }, { "kdheepak/lazygit.nvim", event = "VeryLazy", cmd = { "LazyGit", "LazyGitConfig", "LazyGitCurrentFile", "LazyGitFilter", "LazyGitFilterCurrentFile", }, -- optional for floating window border decoration dependencies = { "nvim-lua/plenary.nvim", }, keys = { { "gg", "LazyGit", desc = "LazyGit" } } }, { "lewis6991/gitsigns.nvim", event = "VeryLazy", opts = { signs = { add = { text = "▎" }, change = { text = "▎" }, delete = { text = "" }, topdelete = { text = "" }, changedelete = { text = "▎" }, untracked = { text = "▎" }, }, } } }