feat(ui): close all buffers on edit
This commit is contained in:
parent
8345d147cf
commit
9b90e3a452
2 changed files with 30 additions and 2 deletions
|
|
@ -90,7 +90,7 @@ local function delete_current_test()
|
|||
return
|
||||
end
|
||||
if #edit_state.test_buffers == 1 then
|
||||
logger.log('Cannot have 0 problem tests.', vim.log.levels.ERROR)
|
||||
logger.log('Problems must have at least one test case.', vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -217,6 +217,32 @@ setup_keybindings = function(buf)
|
|||
{ buffer = buf, silent = true, desc = 'Add test' }
|
||||
)
|
||||
end
|
||||
|
||||
local augroup = vim.api.nvim_create_augroup('cp_edit_guard', { clear = false })
|
||||
vim.api.nvim_create_autocmd({ 'BufDelete', 'BufWipeout' }, {
|
||||
group = augroup,
|
||||
buffer = buf,
|
||||
callback = function()
|
||||
vim.schedule(function()
|
||||
if not edit_state then
|
||||
return
|
||||
end
|
||||
|
||||
local is_tracked = false
|
||||
for _, pair in ipairs(edit_state.test_buffers) do
|
||||
if pair.input_buf == buf or pair.expected_buf == buf then
|
||||
is_tracked = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if is_tracked then
|
||||
logger.log('Test buffer closed unexpectedly. Exiting editor.', vim.log.levels.WARN)
|
||||
M.toggle_edit()
|
||||
end
|
||||
end)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
local function save_all_tests()
|
||||
|
|
@ -279,6 +305,8 @@ function M.toggle_edit(test_index)
|
|||
save_all_tests()
|
||||
edit_state = nil
|
||||
|
||||
pcall(vim.api.nvim_clear_autocmds, { group = 'cp_edit_guard' })
|
||||
|
||||
local saved = state.get_saved_session()
|
||||
if saved then
|
||||
vim.fn.delete(saved)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue