1 -- Neovim plugin to manage the file system and other tree like structures.
 
   2 -- https://github.com/nvim-neo-tree/neo-tree.nvim
 
   3 vim.api.nvim_create_autocmd("BufEnter", {
 
   4         group = vim.api.nvim_create_augroup("load_neo_tree", {}),
 
   5         desc = "Loads neo-tree when opening a buffer",
 
   6         callback = function(args)
 
   7                 -- ExplanationNote: uncomment to load neo-tree only when opening a directory
 
   8                 --local stats = vim.uv.fs_stat(args.file)
 
   9                 --if not stats or stats.type ~= "directory" then
 
  23                 require("neo-tree").setup({
 
  24                         add_blank_line_at_top = false,
 
  25                         auto_clean_after_session_restore = false,
 
  27                                 follow_current_file = { enabled = true, leave_dirs_open = true },
 
  28                                 group_empty_dirs = false,
 
  31                         -- https://github.com/nvim-neo-tree/neo-tree.nvim/wiki/FAQ#bdelete-makes-the-tree-spans-the-whole-window-how-do-i-prevent-it
 
  32                         close_if_last_window = true,
 
  33                         default_source = "buffers",
 
  34                         enable_cursor_hijack = true,
 
  35                         enable_diagnostics = true,
 
  36                         enable_git_status = true,
 
  37                         enable_modified_markers = true,
 
  38                         enable_opened_markers = true,
 
  39                         enable_refresh_on_write = true,
 
  41                                 filtered_items = { visible = true },
 
  42                                 group_empty_dirs = false,
 
  43                                 hijack_netrw_behavior = "open_default",
 
  44                                 use_libuv_file_watcher = true,
 
  46                         git_status_async = false,
 
  47                         hide_root_node = false,
 
  50                         open_files_do_not_replace_types = { "terminal", "Trouble", "qf", "edgy" },
 
  51                         open_files_in_last_window = true,
 
  52                         retain_hidden_root_indent = false,
 
  57                                         -- ["i"] = "move_cursor_up",
 
  58                                         ["I"] = function(state)
 
  59                                                 local tree = state.tree
 
  60                                                 local node = tree:get_node()
 
  61                                                 local siblings = tree:get_nodes(node:get_parent_id())
 
  62                                                 local renderer = require("neo-tree.ui.renderer")
 
  63                                                 renderer.focus_node(state, siblings[1]:get_id())
 
  65                                         ["K"] = function(state)
 
  66                                                 local tree = state.tree
 
  67                                                 local node = tree:get_node()
 
  68                                                 local siblings = tree:get_nodes(node:get_parent_id())
 
  69                                                 local renderer = require("neo-tree.ui.renderer")
 
  70                                                 renderer.focus_node(state, siblings[#siblings]:get_id())