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 default_source = "buffers",
32 enable_cursor_hijack = true,
33 enable_diagnostics = true,
34 enable_git_status = true,
35 enable_modified_markers = true,
36 enable_opened_markers = true,
37 enable_refresh_on_write = true,
39 filtered_items = { visible = true },
40 group_empty_dirs = false,
41 hijack_netrw_behavior = "open_default",
42 use_libuv_file_watcher = true,
44 git_status_async = false,
45 hide_root_node = false,
48 open_files_do_not_replace_types = { "terminal", "Trouble", "qf", "edgy" },
49 open_files_in_last_window = true,
50 retain_hidden_root_indent = false,
55 ["i"] = "move_cursor_up",
56 ["I"] = function(state)
57 local tree = state.tree
58 local node = tree:get_node()
59 local siblings = tree:get_nodes(node:get_parent_id())
60 local renderer = require("neo-tree.ui.renderer")
61 renderer.focus_node(state, siblings[1]:get_id())
63 ["K"] = function(state)
64 local tree = state.tree
65 local node = tree:get_node()
66 local siblings = tree:get_nodes(node:get_parent_id())
67 local renderer = require("neo-tree.ui.renderer")
68 renderer.focus_node(state, siblings[#siblings]:get_id())