return { { "nvim-neo-tree/neo-tree.nvim", cmd = "Neotree", branch = "v2.x", dependencies = { "MunifTanjim/nui.nvim", }, opts = { close_if_last_window = true, sources = { "filesystem", "buffers", "git_status", }, source_selector = { winbar = true, content_layout = "center", sources = { { source = "filesystem", display_name = require("config.icons").FolderClosed .. " File" }, { source = "buffers", display_name = require("config.icons").DefaultFile .. " Bufs" }, { source = "git_status", display_name = require("config.icons").Git .. " Git" }, { source = "diagnostics", display_name = require("config.icons").Diagnostic .. " Diagnostic" }, }, }, default_component_configs = { indent = { padding = 0, }, icon = { folder_closed = require("config.icons").FolderClosed, folder_open = require("config.icons").FolderOpen, folder_empty = require("config.icons").FolderEmpty, folder_empty_open = require("config.icons").FolderEmpty, default = require("config.icons").DefaultFile, }, }, filesystem = { follow_current_file = true, hijack_netrw_behavior = "open_current", use_libuv_file_watcher = true, }, }, keys = { { "fe", function() require("neo-tree.command").execute({ toggle = true, }) end, }, }, }, { "nvim-telescope/telescope.nvim", tag = "0.1.1", dependencies = { "nvim-lua/plenary.nvim", }, cmd = "Telescope", keys = { { "ff", function() require("telescope.builtin").find_files() end, desc = "[ F ]ind files", }, { "fF", function() require("telescope.builtin").find_files({ hidden = true, no_ignore = true }) end, desc = "[ F ]ind [ F ]iles", }, { "lg", function() require("telescope.builtin").live_grep() end, desc = "Live grep", }, { "gf", function() require("telescope.builtin").git_files() end, desc = "Live grep", }, { "fc", function() require("telescope.builtin").git_commits() end, desc = "Git Commits", }, { "of", function() require("telescope.builtin").oldfiles() end, desc = "[ O ]ld [ F ]iles", }, { "ds", function() require("telescope.builtin").lsp_document_symbols() end, desc = "[ D ]ocument [ S ]ymbols", }, { "wss", function() require("telescope.builtin").lsp_dynamic_workspace_symbols() end, desc = "[ W ]orkspace [ S ]ymbol[ s ]", remap = true, }, { "lr", function() require("telescope.builtin").lsp_references() end, desc = "[L]ist [R]erefrences", }, { "ld", function() require("telescope.builtin").diagnostics() end, desc = "[ L ]ist [ D ]iagnostics", }, { "li", function() require("telescope.builtin").lsp_implementations() end, desc = "[ L ]ist [ I ]mplementation", }, { "ldi", function() require("telescope.builtin").lsp_definitions() end, desc = "[ L ]ist [ D ]ef[ i ]nitions", }, }, opts = { defaults = { prompt_prefix = "", selection_caret = "", sorting_strategy = "ascending", layout_config = { horizontal = { prompt_position = "top", width = 0.75, height = 0.65, preview_width = 0.6, }, }, mappings = { i = { [""] = function(...) require("telescope.actions").move_selection_previous(...) end, [""] = function(...) require("telescope.actions").move_selection_next(...) end, }, n = { q = function(...) require("telescope.actions").close(...) end, }, }, }, }, }, { "folke/flash.nvim", event = "VeryLazy", vscode = true, keys = { { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash", }, { "S", mode = { "n", "o", "x" }, 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", }, }, }, { "folke/which-key.nvim", event = "VeryLazy", opts = { plugins = { spelling = true, }, }, }, { "lewis6991/gitsigns.nvim", event = { "BufReadPre", "BufNewFile", }, opts = { signs = { add = { text = "▎" }, change = { text = "▎" }, delete = { text = "" }, topdelete = { text = "" }, changedelete = { text = "▎" }, untracked = { text = "▎" }, }, }, }, { "RRethy/vim-illuminate", event = { "BufReadPost", "BufNewFile", }, opts = { delay = 200, }, config = function(_, opts) require("illuminate").configure(opts) end, keys = { { "]]", desc = "Next Reference" }, { "[[", desc = "Prev Reference" }, }, }, { "echasnovski/mini.bufremove", -- stylua: ignore keys = { { "bd", function() require("mini.bufremove").delete(0, false) end, desc = "Delete Buffer" }, { "bD", function() require("mini.bufremove").delete(0, true) end, desc = "Delete Buffer (Force)" }, }, }, { "folke/trouble.nvim", dependencies = { "nvim-tree/nvim-web-devicons", }, keys = { { "xx", "TroubleToggle document_diagnostics", desc = "Document Diagnostics (Trouble)" }, { "xX", "TroubleToggle workspace_diagnostics", desc = "Workspace Diagnostics (Trouble)" }, { "xL", "TroubleToggle loclist", desc = "Location List (Trouble)" }, { "xQ", "TroubleToggle quickfix", desc = "Quickfix List (Trouble)" }, }, opts = {}, }, { "akinsho/toggleterm.nvim", opts = { open_mapping = [[]], winbar = { enabled = true, }, }, }, { "kdheepak/lazygit.nvim", dependencies = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim", }, keys = { { "gg", function() require("lazygit").lazygit() end, desc = "Lazygit", }, }, config = function() require("telescope").load_extension("lazygit") end, }, { "folke/noice.nvim", event = "VeryLazy", dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify", }, }, }