diff --git a/.config/nvim/.github/README.md b/.config/nvim/.github/README.md index da6b298e..9886c299 100644 --- a/.config/nvim/.github/README.md +++ b/.config/nvim/.github/README.md @@ -454,6 +454,14 @@ +
+ Session + +- [olimorris/persisted.nvim](https://dotfyle.com/plugins/olimorris/persisted.nvim) +- [folke/persistence.nvim](https://dotfyle.com/plugins/folke/persistence.nvim) + +
+
📈 Startup diff --git a/.config/nvim/lazyvim.json b/.config/nvim/lazyvim.json index c8f36f5e..02dbdc42 100644 --- a/.config/nvim/lazyvim.json +++ b/.config/nvim/lazyvim.json @@ -72,6 +72,7 @@ "plugins.extras.util.kitty-scrollback", "plugins.extras.util.mason-lock", "plugins.extras.util.neovide", + "plugins.extras.util.persisted", "plugins.extras.util.persistence-extended", "plugins.extras.util.smart-splits", "plugins.extras.util.vscode", diff --git a/.config/nvim/lua/plugins/extras/util/persisted.lua b/.config/nvim/lua/plugins/extras/util/persisted.lua new file mode 100644 index 00000000..b69fdbc2 --- /dev/null +++ b/.config/nvim/lua/plugins/extras/util/persisted.lua @@ -0,0 +1,91 @@ +local group = vim.api.nvim_create_augroup("PersistedHooks", {}) + +vim.api.nvim_create_autocmd({ "User" }, { + pattern = "PersistedTelescopeLoadPre", + group = group, + callback = function(session) + -- Save the currently loaded session using a global variable + require("persisted").save({ session = vim.g.persisted_loaded_session }) + + -- Delete all of the open buffers + vim.api.nvim_input(":%bd!") + end, +}) + +return { + { + "folke/persistence.nvim", + enabled = false, + }, + { + "olimorris/persisted.nvim", + lazy = false, + config = function() + LazyVim.on_load("telescope.nvim", function() + require("telescope").setup({ + extensions = { + persisted = { + layout_config = { + height = 0.6, + width = 0.6, + }, + }, + }, + }) + require("telescope").load_extension("persisted") + end) + require("persisted").setup({ + use_git_branch = true, + autoload = false, + should_autosave = function() + if vim.bo.filetype == "dashboard" then + return false + end + return true + end, + }) + end, + keys = { + { + "ql", + function() + require("persisted").load() + end, + desc = "Load Session", + }, + { + "qL", + function() + require("persisted").load({ last = true }) + end, + desc = "Load Last Session", + }, + { + "qS", + function() + require("persisted").stop() + end, + desc = "Stop Current Session", + }, + { + "qs", + function() + require("persisted").save() + end, + desc = "Save Current Session (Telescope)", + }, + { + "qT", + function() + require("persisted").start() + end, + desc = "Start Recording Current Session", + }, + { + "qt", + "Telescope persisted", + desc = "Search Sessions (Telescope)", + }, + }, + }, +} diff --git a/.config/nvim/lua/plugins/extras/util/persistence-extended.lua b/.config/nvim/lua/plugins/extras/util/persistence-extended.lua index 2d25d580..a8de8b7b 100644 --- a/.config/nvim/lua/plugins/extras/util/persistence-extended.lua +++ b/.config/nvim/lua/plugins/extras/util/persistence-extended.lua @@ -1,20 +1,22 @@ -local isActive = true -local p = require("persistence") - return { "folke/persistence.nvim", + optional = true, keys = { { "qS", function() + local p = require("persistence") p.save() LazyVim.notify("Session Saved", { title = "Persistence" }) end, desc = "Save Session", }, -- stylua: ignore start - { "qt", + { + "qt", function() + local isActive = true + local p = require("persistence") if isActive then p.stop() isActive = false