diff --git a/lua/persisted/init.lua b/lua/persisted/init.lua index 7167790..5708437 100644 --- a/lua/persisted/init.lua +++ b/lua/persisted/init.lua @@ -126,7 +126,7 @@ function M.save(opts) config.save_post() end M.fire("PersistedSavePost") - return true -- returning deletes autocmd after fired + return true -- returning true deletes autocmd after fired end, }) @@ -134,7 +134,8 @@ function M.save(opts) if type(config.save_pre) == "function" then config.save_pre() end - vim.cmd("mks! " .. e(opts.session or vim.g.persisting_session or M.current())) + vim.api.nvim_command("wa") + vim.api.nvim_command = "mksession! " .. e(opts.session or vim.g.persisting_session or M.current()) end ---Delete the current session diff --git a/lua/telescope/_extensions/persisted/actions.lua b/lua/telescope/_extensions/persisted/actions.lua index 4146bbb..896044c 100644 --- a/lua/telescope/_extensions/persisted/actions.lua +++ b/lua/telescope/_extensions/persisted/actions.lua @@ -21,6 +21,8 @@ end ---Load the selected session ---@param session table function M.load_session(session) + fire("TelescopeLoadPre") + vim.api.nvim_create_autocmd("User", { pattern = "PersistedLoadPost", callback = function() @@ -29,10 +31,20 @@ function M.load_session(session) end, }) - fire("TelescopeLoadPre") - vim.schedule(function() - persisted.load({ session = session.file_path }) - end) + vim.api.nvim_create_autocmd("User", { + pattern = "PersistedSavePost", + callback = function() + vim.schedule(function() + for _, buf in ipairs(vim.api.nvim_list_bufs()) do + vim.api.nvim_buf_delete(buf, { force = true }) + end + persisted.load({ session = session.file_path }) + end) + return true + end, + }) + + persisted.save({ session = vim.g.persisted_loaded_session }) end ---Delete the selected session from disk