Skip to content

Commit

Permalink
Merge pull request #309 from cameronr/main
Browse files Browse the repository at this point in the history
Fix tried to close last window error
  • Loading branch information
rmagatti authored Jun 27, 2024
2 parents e5ffe23 + ada2575 commit 363f9e2
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 6 deletions.
14 changes: 9 additions & 5 deletions lua/auto-session/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ local luaOnlyConf = {
control_filename = "session_control.json", -- File name of the session control file
},
},
silent_restore = true
silent_restore = true,
}

-- Set default config on plugin load
Expand Down Expand Up @@ -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

Expand All @@ -396,7 +396,11 @@ function AutoSession.AutoSaveSession(sessions_dir)
end

if AutoSession.conf.close_unsupported_windows then
Lib.close_unsupported_windows()
-- Wrap in pcall in case there's an error while trying to close windows
local success, result = pcall(Lib.close_unsupported_windows)
if not success then
Lib.logger.debug("Error closing unsupported windows: " .. result)
end
end

AutoSession.SaveSession(sessions_dir, true)
Expand Down Expand Up @@ -856,7 +860,7 @@ function AutoSession.PurgeOrphanedSessions()
local orphaned_sessions = {}

for _, session in ipairs(AutoSession.get_session_files()) do
if session.display_name:find('^/.*') and vim.fn.isdirectory(session.display_name) == Lib._VIM_FALSE then
if session.display_name:find "^/.*" and vim.fn.isdirectory(session.display_name) == Lib._VIM_FALSE then
table.insert(orphaned_sessions, session.display_name)
end
end
Expand Down Expand Up @@ -907,7 +911,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" })
Expand Down
5 changes: 4 additions & 1 deletion lua/auto-session/lib.lua
Original file line number Diff line number Diff line change
Expand Up @@ -190,11 +190,14 @@ function Lib.close_unsupported_windows()
for _, tabpage in ipairs(tabpages) do
local windows = vim.api.nvim_tabpage_list_wins(tabpage)
for _, window in ipairs(windows) do
-- Never try to close the last window of the last tab
if vim.fn.tabpagenr "$" == 1 and vim.fn.winnr "$" == 1 then
return
end
local buffer = vim.api.nvim_win_get_buf(window)
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;
end
end
end
Expand Down

0 comments on commit 363f9e2

Please sign in to comment.