53 lines
1.6 KiB
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,
|
|
}
|