return { { 'rmagatti/auto-session', lazy = false, keys = { -- Will use Telescope if installed or a vim.ui.select picker otherwise { 'wr', 'AutoSession search', desc = 'Session search' }, { 'ws', 'AutoSession save', desc = 'Save session' }, { 'wa', 'AutoSession toggle', desc = 'Toggle autosave' }, }, ---enables autocomplete for opts ---@module 'auto-session' ---@type AutoSession.Config opts = { suppressed_dirs = { '~/', '~/Downloads', '/' }, -- Keep sessions even when only a directory/sidebar is open (IDE-style usage). auto_delete_empty_sessions = false, save_extra_data = function(_) local ok, layout = pcall(require, 'custom.layout') if not ok then return nil end local focus = layout.capture_focus() if not focus then return nil end return vim.fn.json_encode { focus = focus, } end, restore_extra_data = function(_, extra_data) local ok_json, decoded = pcall(vim.fn.json_decode, extra_data) if not ok_json or type(decoded) ~= 'table' then return end local ok_layout, layout = pcall(require, 'custom.layout') if not ok_layout then return end local focus = decoded.focus if type(focus) == 'table' then vim.schedule(function() layout.restore_focus(focus) end) end end, post_restore_cmds = { function(_) local ok_layout, layout = pcall(require, 'custom.layout') if not ok_layout then return end vim.schedule(function() layout.reset_ide_layout { focus_main = false } end) end, }, -- log_level = 'debug', }, }, }