82 lines
2.2 KiB
Lua
82 lines
2.2 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)
|
|
|
|
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>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'},
|
|
})
|
|
end,
|
|
}
|