kickstart.nvim/lua/plugins/session.lua

53 lines
1.6 KiB
Lua

---@diagnostic disable: undefined-global
return {
'echasnovski/mini.sessions',
version = '*',
event = 'VimEnter',
config = function()
local function get_session_name()
return vim.fn.fnamemodify(vim.fn.getcwd(), ':t')
end
-- Cache Go project check per directory
local go_project_cache = {}
local function is_go_project()
local cwd = vim.fn.getcwd()
if go_project_cache[cwd] == nil then
-- Single glob with brace expansion
go_project_cache[cwd] = vim.fn.glob(cwd .. '/{*.go,go.mod,go.work}') ~= ''
end
return go_project_cache[cwd]
end
require('mini.sessions').setup({
autoread = false,
autowrite = true,
directory = vim.fn.stdpath('data') .. '/sessions',
file = '',
force = { read = false, write = true, delete = false },
hooks = {
pre = {
read = function() return not is_go_project() end,
write = function() return not is_go_project() end,
},
-- After successful action
post = { read = nil, write = nil, delete = nil },
},
-- Whether to print session path after action
verbose = { read = false, write = true, delete = true },
})
-- Set up autocommands for auto-saving
local session_group = vim.api.nvim_create_augroup('mini_sessions', { clear = true })
vim.api.nvim_create_autocmd('VimLeavePre', {
group = session_group,
callback = function()
local name = get_session_name()
if name then
require('mini.sessions').write(name, { force = true })
end
end,
})
end,
}