]> 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 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,
38 filesystem = {
39 filtered_items = { visible = true },
40 group_empty_dirs = false,
41 hijack_netrw_behavior = "open_default",
42 use_libuv_file_watcher = true,
43 },
44 git_status_async = false,
45 hide_root_node = false,
46 log_level = "info",
47 log_to_file = 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,
51 signs = true,
52 window = {
53 position = "right",
54 mappings = {
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())
62 end,
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())
69 end,
70 },
71 },
72 })
73 end,
74 }