{ lib, config, ... }: let cfg = config.presets.base.tree; in { options.presets.base.tree = { enable = lib.mkEnableOption "file tree"; }; config = lib.mkIf cfg.enable { keymaps = [ { key = "ft"; action = ":Neotree toggle"; } { key = "ss"; action = ":Neotree document_symbols right toggle"; } ]; plugins = { neo-tree = { enable = true; filesystem = { useLibuvFileWatcher = true; followCurrentFile.enabled = true; filteredItems.visible = true; }; extraSources = [ "document_symbols" ]; popupBorderStyle = "rounded"; eventHandlers.neo_tree_buffer_leave = # lua '' function() require('neo-tree').close_all() end ''; }; which-key.registrations = { "f".t = "Tree"; "s".s = "Document Symbols"; }; }; }; }