Skip to content

Commit 922b086

Browse files
authored
Merge pull request #14 from ttak0422/fix/terminal-disappears-on-tab-switch
fix: defer BufDelete handler to ignore buflisted changes from scope-nvim
2 parents befc045 + e5dd036 commit 922b086

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

lua/pterm/init.lua

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,21 @@ local function start_terminal(session_name, cmd)
184184
local augroup_name = "pterm_" .. session_name:gsub("/", "_")
185185
local augroup = vim.api.nvim_create_augroup(augroup_name, { clear = true })
186186

187-
-- Clean up on buffer delete
187+
-- Clean up on buffer delete.
188+
-- BufDelete fires both when a buffer is truly deleted (:bdelete/:bwipeout)
189+
-- and when a plugin merely sets buflisted=false (e.g. scope-nvim scopes
190+
-- buffers per tab page). Defer the check so we can distinguish the two:
191+
-- a merely-unlisted buffer remains valid and loaded.
188192
vim.api.nvim_create_autocmd("BufDelete", {
189193
group = augroup,
190194
buffer = buf,
191195
callback = function()
192-
M.detach(session_name)
196+
vim.schedule(function()
197+
if vim.api.nvim_buf_is_valid(buf) and vim.api.nvim_buf_is_loaded(buf) then
198+
return
199+
end
200+
M.detach(session_name)
201+
end)
193202
end,
194203
})
195204

0 commit comments

Comments
 (0)