From d855c0410e815ca7d6993b342c34b8f31fd54a8b Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Wed, 9 Jul 2025 16:04:42 +0200 Subject: [PATCH] Modules/Neovim: Replace snacks.explorer with neotree --- home/modules/neovim/default.nix | 75 +++++++++++++++++++++++++++++++- home/modules/neovim/mappings.nix | 3 +- 2 files changed, 75 insertions(+), 3 deletions(-) diff --git a/home/modules/neovim/default.nix b/home/modules/neovim/default.nix index 710de5a4..67f2c468 100644 --- a/home/modules/neovim/default.nix +++ b/home/modules/neovim/default.nix @@ -1191,6 +1191,77 @@ in { }; }; + neotree = rec { + name = "neo-tree"; + pkg = pkgs.vimPlugins.neo-tree-nvim; + dependencies = [ + _plenary + web-devicons + _nui + ]; + lazy = true; + cmd = ["Neotree"]; + config = mkDefaultConfig name; + opts = { + use_default_mappings = false; + popup_border_style = "rounded"; + enable_git_status = true; + enable_diagnostics = false; + open_files_do_not_replace_types = ["terminal" "trouble" "qf"]; + + default_component_configs = { + container = { + enable_character_fade = true; + }; + }; + + filesystem = { + bind_to_cwd = true; + cwd_target.sidebar = "global"; + + filtered_items = { + visible = false; # Toggle with "H" + }; + + follow_current_file = { + enabled = true; + leave_dirs_open = false; + }; + }; + + buffers = { + follow_current_file = { + enabled = true; + leave_dirs_open = false; + }; + }; + + window = { + position = "left"; + + mappings = { + "" = "open"; + "c" = "close_node"; + "R" = "refresh"; + "q" = "close_window"; + "i" = "show_file_details"; + "r" = "rename"; + "d" = "delete"; + "x" = "cut_to_clipboard"; + "y" = "copy_to_clipboard"; + "p" = "paste_from_clipboard"; + "a" = "add"; + "." = "set_root"; + ">" = "navigate_up"; + "H" = "toggle_hidden"; + "" = "cancel"; + "/" = "fuzzy_finder"; + "?" = "show_help"; + }; + }; + }; + }; + _nui = { name = "nui"; # For noice pkg = pkgs.vimPlugins.nui-nvim; @@ -1475,9 +1546,8 @@ in { }; }; - # TODO: Replace with neo-tree (or figure out how to multiselect and cut/paste) explorer = { - enabled = true; + enabled = false; replace_netrw = false; # Use yazi for that }; @@ -1987,6 +2057,7 @@ in { navbuddy # Structural file view neogen # Generate doc comments + neotree noice # Modern UI overhaul, e.g. floating cmdline obsidian # Integration with Obsidian.md diff --git a/home/modules/neovim/mappings.nix b/home/modules/neovim/mappings.nix index b8aa6741..afb057ec 100644 --- a/home/modules/neovim/mappings.nix +++ b/home/modules/neovim/mappings.nix @@ -301,7 +301,8 @@ _: let { mode = "n"; key = "e"; - action = "lua Snacks.explorer.open({ enter = false, on_show = function() vim.cmd('wincmd =') end })"; + # action = "lua Snacks.explorer.open({ enter = false, on_show = function() vim.cmd('wincmd =') end })"; + action = "Neotree action=show toggle=true="; options.desc = "Toggle Explorer"; } {