Files
dotfiles/roles/nvim/files/lua/config/plugins/auto-session.lua
2026-04-05 13:25:20 +02:00

85 lines
2.3 KiB
Lua

return {
'rmagatti/auto-session',
lazy = false,
config = function()
local auto_session = require('auto-session')
auto_session.setup({
auto_save = false,
auto_restore = false,
post_restore_cmds = {
function ()
local buf_exists = function(bufname)
for _, buf in ipairs(vim.fn.getbufinfo({ bufloaded = true })) do
if buf.name:match(bufname) then
return true
end
end
return false
end
-- If NvimTree was opened when the session was saved, show it
if buf_exists('NvimTree_') then
local nvim_tree_api = require('nvim-tree.api')
nvim_tree_api.tree.reload()
nvim_tree_api.tree.open()
end
end
}
})
local opts = { silent = true, noremap = true }
local function git_branch()
local branch = vim.trim(vim.fn.system('git branch --show-current 2>/dev/null'))
if vim.v.shell_error ~= 0 or branch == '' then return nil end
return branch
end
local function session_save()
local branch = git_branch()
if branch then
vim.cmd('AutoSession save ' .. branch)
else
vim.cmd('AutoSession save')
end
end
local function session_restore()
local branch = git_branch()
if branch then
vim.cmd('AutoSession restore ' .. branch)
else
vim.cmd('AutoSession restore')
end
end
local keymap = vim.keymap
keymap.set('n', '<leader>ss', session_save, opts)
keymap.set('n', '<leader>sq', function() session_save(); vim.cmd('wa | qa') end, opts)
keymap.set('n', '<leader>sl', '<cmd>AutoSession search<cr>', opts)
keymap.set('n', '<leader>sr', session_restore, opts)
keymap.set('n', '<leader>sd', '<cmd>AutoSession delete<cr>', opts)
keymap.set('n', '<leader>qa', '<cmd>qa<cr>', opts)
local function named_save()
vim.ui.input({ prompt = 'Enter Session name: ' }, function(input)
auto_session.SaveSession(input)
end)
end
keymap.set('n', '<leader>sS', named_save, opts)
local wk = require('which-key')
wk.add({
{ '<leader>s', group = 'auto-session' },
{ '<leader>q', group = 'quit' },
{ '<leader>ss', desc = 'SessionSave' },
{ '<leader>sS', desc = 'NamedSessionSave' },
{ '<leader>sq', desc = 'Save and Quit' },
{ '<leader>sl', desc = 'SessionList (SessionSearch)'},
{ '<leader>sr', desc = 'SessionRestore'},
{ '<leader>sd', desc = 'SessionDelete'},
{ '<leader>qa', desc = 'Quit All'},
})
end,
}