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