]> Git — Sourcephile - julm/julm-nix.git/blob - home-manager/profiles/nvim/lua/plugins/neo-tree.lua
neovim: configure, using ghostty and tmux
[julm/julm-nix.git] / home-manager / profiles / nvim / lua / plugins / neo-tree.lua
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
10 -- return
11 --end
12 --require("neo-tree")
13
14 vim.cmd("Neotree")
15
16 return true
17 end,
18 })
19 return {
20 "neo-tree.nvim",
21 cmd = { "Neotree" },
22 after = function()
23 require("neo-tree").setup({
24 add_blank_line_at_top = false,
25 auto_clean_after_session_restore = false,
26 buffers = {
27 follow_current_file = { enabled = true, leave_dirs_open = true },
28 group_empty_dirs = false,
29 show_unloaded = true,
30 },
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,
40 filesystem = {
41 filtered_items = { visible = true },
42 group_empty_dirs = false,
43 hijack_netrw_behavior = "open_default",
44 use_libuv_file_watcher = true,
45 },
46 git_status_async = false,
47 hide_root_node = false,
48 log_level = "info",
49 log_to_file = 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,
53 signs = true,
54 window = {
55 position = "right",
56 mappings = {
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())
64 end,
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())
71 end,
72 },
73 },
74 })
75 end,
76 }