From 19c2b7744adfb62f21a92e47f3d4bb4e14a99cec 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 | 8 ++++++++ 4 files changed, 34 insertions(+) create mode 100644 config/plugins/editor/sessions.nix diff --git a/config/default.nix b/config/default.nix index 3c8edba..1c9f245 100644 --- a/config/default.nix +++ b/config/default.nix @@ -11,6 +11,7 @@ ./plugins/cmp/cmp.nix # Editor plugins and configurations + ./plugins/editor/sessions.nix ./plugins/editor/buffers.nix ./plugins/editor/comment.nix ./plugins/editor/treesitter.nix 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..f2f0702 100644 --- a/config/plugins/ui/neo-tree.nix +++ b/config/plugins/ui/neo-tree.nix @@ -1,7 +1,15 @@ {...}: { plugins.neo-tree = { enable = true; + autoCleanAfterSessionRestore = true; closeIfLastWindow = true; + eventHandlers = { + neo_tree_window_after_open = '' + function(_) + vim.cmd("wincmd =") + end + ''; + }; }; keymaps = [