Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix tried to close last window error #309

Merged
merged 2 commits into from
Jun 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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