Merge pull request #178 from barrett-ruth/feat/ui/remove-extra-line
close all buffers on edit in ui mode
This commit is contained in:
commit
401494aab0
2 changed files with 30 additions and 2 deletions
|
|
@ -5,7 +5,7 @@
|
||||||
Scrape problems, run tests, and debug solutions across multiple platforms with
|
Scrape problems, run tests, and debug solutions across multiple platforms with
|
||||||
zero configuration.
|
zero configuration.
|
||||||
|
|
||||||
https://github.com/user-attachments/assets/2f01db4a-718a-482b-89c0-e841d37a63b4
|
https://github.com/user-attachments/assets/956ec4c4-5ef1-4391-abea-3a51fa771809
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ local function delete_current_test()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if #edit_state.test_buffers == 1 then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -217,6 +217,32 @@ setup_keybindings = function(buf)
|
||||||
{ buffer = buf, silent = true, desc = 'Add test' }
|
{ buffer = buf, silent = true, desc = 'Add test' }
|
||||||
)
|
)
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
local function save_all_tests()
|
local function save_all_tests()
|
||||||
|
|
@ -279,6 +305,8 @@ function M.toggle_edit(test_index)
|
||||||
save_all_tests()
|
save_all_tests()
|
||||||
edit_state = nil
|
edit_state = nil
|
||||||
|
|
||||||
|
pcall(vim.api.nvim_clear_autocmds, { group = 'cp_edit_guard' })
|
||||||
|
|
||||||
local saved = state.get_saved_session()
|
local saved = state.get_saved_session()
|
||||||
if saved then
|
if saved then
|
||||||
vim.fn.delete(saved)
|
vim.fn.delete(saved)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue