local util = require("lazyvim.functions") return { { "kyazdani42/nvim-tree.lua", cmd = "NvimTreeToggle", config = function() local nvim_tree = require("nvim-tree") local nvim_tree_config = require("nvim-tree.config") local icons = require("lazyvim.config.icons") local tree_cb = nvim_tree_config.nvim_tree_callback nvim_tree.setup({ hijack_directories = { enable = false, }, ignore_ft_on_setup = { "alpha", }, filters = { custom = { ".git" }, exclude = { ".gitignore" }, }, hijack_cursor = false, update_cwd = true, renderer = { add_trailing = false, group_empty = false, highlight_git = false, highlight_opened_files = "none", root_folder_modifier = ":t", indent_markers = { enable = false, icons = { corner = "└ ", edge = "│ ", none = " ", }, }, icons = { webdev_colors = true, git_placement = "before", padding = " ", symlink_arrow = " ➛ ", show = { file = true, folder = true, folder_arrow = true, git = true, }, glyphs = { default = "", symlink = "", folder = { arrow_open = icons.ui.ArrowOpen, arrow_closed = icons.ui.ArrowClosed, default = "", open = "", empty = "", empty_open = "", symlink = "", symlink_open = "", }, git = { unstaged = "", staged = "S", unmerged = "", renamed = "➜", untracked = "U", deleted = "", ignored = "◌", }, }, }, }, diagnostics = { enable = true, icons = { hint = icons.diagnostics.Hint, info = icons.diagnostics.Information, warning = icons.diagnostics.Warning, error = icons.diagnostics.Error, }, }, update_focused_file = { enable = true, update_cwd = true, ignore_list = {}, }, git = { enable = true, ignore = true, timeout = 500, }, view = { width = 30, hide_root_folder = false, side = "left", mappings = { custom_only = false, list = { { key = { "l", "", "o" }, cb = tree_cb("edit") }, { key = "h", cb = tree_cb("close_node") }, { key = "v", cb = tree_cb("vsplit") }, }, }, number = false, relativenumber = false, }, actions = { open_file = { quit_on_open = true, }, }, }) end, }, { "windwp/nvim-spectre", -- stylua: ignore keys = { { "sr", function() require("spectre").open() end, desc = "Replace in files (Spectre)" }, }, }, { "nvim-telescope/telescope.nvim", cmd = "Telescope", keys = { { "/", util.telescope("live_grep"), desc = "Find in Files (Grep)" }, { "", util.telescope("find_files"), desc = "Find Files (root dir)" }, { "fb", "Telescope buffers", desc = "Buffers" }, { "ff", util.telescope("find_files"), desc = "Find Files (root dir)" }, { "fF", util.telescope("find_files", { cwd = false }), desc = "Find Files (cwd)" }, { "fr", "Telescope oldfiles", desc = "Recent" }, { "gc", "Telescope git_commits", desc = "commits" }, { "gs", "Telescope git_status", desc = "status" }, { "ha", "Telescope autocommands", desc = "Auto Commands" }, { "hc", "Telescope commands", desc = "Commands" }, { "hf", "Telescope filetypes", desc = "File Types" }, { "hh", "Telescope help_tags", desc = "Help Pages" }, { "hk", "Telescope keymaps", desc = "Key Maps" }, { "hm", "Telescope man_pages", desc = "Man Pages" }, { "ho", "Telescope vim_options", desc = "Options" }, { "hs", "Telescope highlights", desc = "Search Highlight Groups" }, { "ht", "Telescope builtin", desc = "Telescope" }, { "sb", "Telescope current_buffer_fuzzy_find", desc = "Buffer" }, { "sc", "Telescope command_history", desc = "Command History" }, { "sg", util.telescope("live_grep"), desc = "Grep (root dir)" }, { "sG", util.telescope("live_grep", { cwd = false }), desc = "Grep (cwd)" }, { "sm", "Telescope marks", desc = "Jump to Mark" }, { ",", "Telescope buffers show_all_buffers=true", desc = "Switch Buffer" }, { ":", "Telescope command_history", desc = "Command History" }, { "ss", util.telescope("lsp_document_symbols", { symbols = { "Class", "Function", "Method", "Constructor", "Interface", "Module", "Struct", "Trait", "Field", "Property", }, }), desc = "Goto Symbol", }, }, config = { defaults = { prompt_prefix = " ", selection_caret = " ", mappings = { i = { [""] = function(...) return require("trouble.providers.telescope").open_with_trouble(...) end, [""] = function() util.telescope("find_files", { no_ignore = true })() end, [""] = function() util.telescope("find_files", { hidden = true })() end, [""] = function(...) return require("telescope.actions").cycle_history_next(...) end, [""] = function(...) return require("telescope.actions").cycle_history_prev(...) end, }, }, }, }, }, { "folke/trouble.nvim", cmd = { "TroubleToggle", "Trouble" }, config = { use_diagnostic_signs = true }, keys = { { "xx", "TroubleToggle document_diagnostics", desc = "Document Diagnostics (Trouble)" }, { "xX", "TroubleToggle workspace_diagnostics", desc = "Workspace Diagnostics (Trouble)" }, }, }, { "folke/todo-comments.nvim", cmd = { "TodoTrouble", "TodoTelescope" }, event = "BufReadPost", config = true, -- stylua: ignore keys = { { "]t", function() require("todo-comments").jump_next() end, desc = "Next todo comment" }, { "[t", function() require("todo-comments").jump_prev() end, desc = "Previous todo comment" }, { "xt", "TodoTrouble", desc = "Todo Trouble" }, { "xtt", "TodoTrouble keywords=TODO,FIX,FIXME", desc = "Todo Trouble" }, { "xT", "TodoTelescope", desc = "Todo Telescope" }, }, }, { "numToStr/Comment.nvim", config = function() require("Comment").setup({}) end, }, }