From eae19b0c19623db339a02183c1b32cbf6e066abe Mon Sep 17 00:00:00 2001 From: jasmine Date: Thu, 15 May 2025 11:09:32 +0800 Subject: [PATCH] session management --- config/default.nix | 1 + config/options.nix | 4 ++++ config/plugins/editor/sessions.nix | 21 +++++++++++++++++++++ config/plugins/ui/neo-tree.nix | 7 +++++++ 4 files changed, 33 insertions(+) create mode 100644 config/plugins/editor/sessions.nix diff --git a/config/default.nix b/config/default.nix index 3c8edba..f8466cb 100644 --- a/config/default.nix +++ b/config/default.nix @@ -13,6 +13,7 @@ # Editor plugins and configurations ./plugins/editor/buffers.nix ./plugins/editor/comment.nix + ./plugins/editor/sessions.nix ./plugins/editor/treesitter.nix # UI plugins diff --git a/config/options.nix b/config/options.nix index decd4bd..61378c7 100644 --- a/config/options.nix +++ b/config/options.nix @@ -8,11 +8,15 @@ clipboard = "unnamedplus"; conceallevel = 1; updatetime=100; + undofile = true; # Tabs & Spaces tabstop = 2; softtabstop = 2; shiftwidth = 2; expandtab = true; + + # Using this config for sessionoptions is recommended: + sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"; }; } diff --git a/config/plugins/editor/sessions.nix b/config/plugins/editor/sessions.nix new file mode 100644 index 0000000..265adab --- /dev/null +++ b/config/plugins/editor/sessions.nix @@ -0,0 +1,21 @@ +{ ... }: { + plugins.auto-session = { + enable = true; + settings = { + pre_save_cmds = ["Neotree close"]; + post_restore_cmds = ["Neotree show"]; + }; + }; + + keymaps = [ + { + mode = ["n"]; + key = "ss"; + action = ":SessionSearch"; + options = { + desc = "Search sessions"; + silent = true; + }; + } + ]; +} diff --git a/config/plugins/ui/neo-tree.nix b/config/plugins/ui/neo-tree.nix index 09c1eb3..5d643da 100644 --- a/config/plugins/ui/neo-tree.nix +++ b/config/plugins/ui/neo-tree.nix @@ -1,6 +1,13 @@ {...}: { plugins.neo-tree = { enable = true; + eventHandlers = { + neo_tree_window_after_open = '' + function(_) + vim.cmd("wincmd =") + end + ''; + }; closeIfLastWindow = true; };