-- Neovim plugin to manage the file system and other tree like structures. -- https://github.com/nvim-neo-tree/neo-tree.nvim vim.api.nvim_create_autocmd("BufEnter", { group = vim.api.nvim_create_augroup("load_neo_tree", {}), desc = "Loads neo-tree when opening a buffer", callback = function(args) -- ExplanationNote: uncomment to load neo-tree only when opening a directory --local stats = vim.uv.fs_stat(args.file) --if not stats or stats.type ~= "directory" then -- return --end --require("neo-tree") vim.cmd("Neotree") return true end, }) return { "neo-tree.nvim", cmd = { "Neotree" }, after = function() require("neo-tree").setup({ add_blank_line_at_top = false, auto_clean_after_session_restore = false, buffers = { follow_current_file = { enabled = true, leave_dirs_open = true }, group_empty_dirs = false, show_unloaded = true, }, -- https://github.com/nvim-neo-tree/neo-tree.nvim/wiki/FAQ#bdelete-makes-the-tree-spans-the-whole-window-how-do-i-prevent-it close_if_last_window = true, default_source = "buffers", enable_cursor_hijack = true, enable_diagnostics = true, enable_git_status = true, enable_modified_markers = true, enable_opened_markers = true, enable_refresh_on_write = true, filesystem = { filtered_items = { visible = true }, group_empty_dirs = false, hijack_netrw_behavior = "open_default", use_libuv_file_watcher = true, }, git_status_async = false, hide_root_node = false, log_level = "info", log_to_file = false, open_files_do_not_replace_types = { "terminal", "Trouble", "qf", "edgy" }, open_files_in_last_window = true, retain_hidden_root_indent = false, signs = true, window = { position = "right", mappings = { -- ["i"] = "move_cursor_up", ["I"] = function(state) local tree = state.tree local node = tree:get_node() local siblings = tree:get_nodes(node:get_parent_id()) local renderer = require("neo-tree.ui.renderer") renderer.focus_node(state, siblings[1]:get_id()) end, ["K"] = function(state) local tree = state.tree local node = tree:get_node() local siblings = tree:get_nodes(node:get_parent_id()) local renderer = require("neo-tree.ui.renderer") renderer.focus_node(state, siblings[#siblings]:get_id()) end, }, }, }) end, }