aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lua/autosession_conf.lua
diff options
context:
space:
mode:
authorAlec Goncharow <alec@goncharow.dev>2024-03-06 21:05:37 -0500
committerAlec Goncharow <alec@goncharow.dev>2024-03-06 21:05:37 -0500
commitf1ed7ee1444e2a3f678a934ebb7b3cbafc709ed1 (patch)
tree9d3f6f28081e71236ffc4b743ac026d2927c0979 /.config/nvim/lua/autosession_conf.lua
parent5991cc4137857ab65fcdd5bfc8cd1a6d028a75d9 (diff)
delete term buffers before saving session
Diffstat (limited to '.config/nvim/lua/autosession_conf.lua')
-rw-r--r--.config/nvim/lua/autosession_conf.lua15
1 files changed, 15 insertions, 0 deletions
diff --git a/.config/nvim/lua/autosession_conf.lua b/.config/nvim/lua/autosession_conf.lua
index 5c2a76d..26e2509 100644
--- a/.config/nvim/lua/autosession_conf.lua
+++ b/.config/nvim/lua/autosession_conf.lua
@@ -1,3 +1,17 @@
+function string.starts(String, Start)
+ return string.sub(String, 1, string.len(Start)) == Start
+end
+
+-- for reasons beyond my comprehension, sessions get corrupted whenever a term buffer is left open, so let's just close all term to minimize friction
+local function close_term_bufs()
+ for _, buf_hndl in ipairs(vim.api.nvim_list_bufs()) do
+ local name = vim.api.nvim_buf_get_name(buf_hndl)
+ if string.starts(name, "term://") then
+ vim.api.nvim_buf_delete(buf_hndl, { force = true })
+ end
+ end
+end
+
local opts = {
log_level = 'error',
auto_session_enable_last_session = false,
@@ -14,6 +28,7 @@ local opts = {
pre_cwd_changed_hook = nil, -- function: This is called after auto_session code runs for the `DirChangedPre` autocmd
post_cwd_changed_hook = nil, -- function: This is called after auto_session code runs for the `DirChanged` autocmd
},
+ pre_save_cmds = { close_term_bufs }
}
vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"