summaryrefslogtreecommitdiff
path: root/lua/plugins/auto-session.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/plugins/auto-session.lua')
-rw-r--r--lua/plugins/auto-session.lua34
1 files changed, 27 insertions, 7 deletions
diff --git a/lua/plugins/auto-session.lua b/lua/plugins/auto-session.lua
index 5737e3a..974d32d 100644
--- a/lua/plugins/auto-session.lua
+++ b/lua/plugins/auto-session.lua
@@ -1,19 +1,39 @@
+local function close_plugins()
+ -- dirty way of handling neotree not being loaded yet (lazy load on <leader>nt)
+ local _ = pcall(vim.cmd, 'Neotree close')
+ -- same thing for trouble
+ local _ = pcall(vim.cmd, 'TroubleClose')
+end
+
+-- from https://github.com/rmagatti/auto-session/pull/230
+local function close_unsupported()
+ local tabpages = vim.api.nvim_list_tabpages()
+ for _, tabpage in ipairs(tabpages) do
+ local windows = vim.api.nvim_tabpage_list_wins(tabpage)
+ for _, window in ipairs(windows) do
+ local buffer = vim.api.nvim_win_get_buf(window)
+ local file_name = vim.api.nvim_buf_get_name(buffer)
+ -- local is_readable = vim.fn.exists(file_name)
+ local is_readable = vim.fn.filereadable(file_name)
+ if not is_readable then
+ vim.api.nvim_win_close(window, true)
+ end
+ end
+ end
+end
+
return {
'rmagatti/auto-session',
opts = {
log_level = 'error',
auto_session_enabled = true,
auto_session_create_enabled = false,
- auto_save_enabled = false, -- i only want to save some sessions
+ auto_save_enabled = false, -- i only want to save some sessions
auto_restore_enabled = true, -- always restore if session exists
-- handle closing the neotree window/buffer as it results in errors when loading the session
pre_save_cmds = {
- function()
- -- dirty way of handling neotree not being loaded yet (lazy load on <leader>nt)
- local _ = pcall(vim.cmd, 'Neotree close')
- -- same thing for trouble
- local _ = pcall(vim.cmd, 'TroubleClose')
- end,
+ close_plugins,
+ close_unsupported,
},
},
config = function(_, opts)