From 518a775f17c38a07db3a6addeccbafa9ab670636 Mon Sep 17 00:00:00 2001 From: Cameron Ring Date: Mon, 24 Jun 2024 16:46:57 -0700 Subject: [PATCH] Fix tried to close last window error Easiest repro is only have a new buffer (not saved to a file) and exit. We'll try to close that window and generate an error. To fix, we wrap `Lib.close_unsupported_windows` in a `pcall`. In general, not great to eat all errors but we're making our best effort to close all of the unsupported windows and there are a bunch of edge cases there so this seems like the most reasonable path to me. Also added a missiing local --- lua/auto-session/init.lua | 7 ++++--- lua/auto-session/lib.lua | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lua/auto-session/init.lua b/lua/auto-session/init.lua index 12a0cdd..055a857 100644 --- a/lua/auto-session/init.lua +++ b/lua/auto-session/init.lua @@ -379,7 +379,7 @@ end -- This is useful for starter plugins which don't want to display 'restore session' -- unless a session for the current working directory exists. function AutoSession.session_exists_for_cwd() - session_file = get_session_file_name(vim.fn.getcwd()) + local session_file = get_session_file_name(vim.fn.getcwd()) return Lib.is_readable(session_file) end @@ -396,7 +396,8 @@ function AutoSession.AutoSaveSession(sessions_dir) end if AutoSession.conf.close_unsupported_windows then - Lib.close_unsupported_windows() + -- Swallow errors as we may end up trying to close the last window + pcall(Lib.close_unsupported_windows) end AutoSession.SaveSession(sessions_dir, true) @@ -907,7 +908,7 @@ function SetupAutocmds() vim.api.nvim_create_user_command( "SessionSave", SaveSession, - { bang = true, nargs = '?', desc = "Save the current session. Based in cwd if no arguments are passed" } + { bang = true, nargs = "?", desc = "Save the current session. Based in cwd if no arguments are passed" } ) vim.api.nvim_create_user_command("SessionRestore", SessionRestore, { bang = true, desc = "Restore Session" }) diff --git a/lua/auto-session/lib.lua b/lua/auto-session/lib.lua index 53a392b..c8bb8c2 100644 --- a/lua/auto-session/lib.lua +++ b/lua/auto-session/lib.lua @@ -194,7 +194,7 @@ function Lib.close_unsupported_windows() local file_name = vim.api.nvim_buf_get_name(buffer) if not Lib.is_readable(file_name) then vim.api.nvim_win_close(window, true) - break; + break end end end