fix: unlock buffers if we cancel the actions (#4)

This commit is contained in:
Steven Arcangeli 2023-01-02 10:44:07 -08:00
parent f70d796c80
commit 0d6ee144d2

View file

@ -436,7 +436,10 @@ M.try_write_changes = function(confirm)
local buffers = view.get_all_buffers()
local all_diffs = {}
local all_errors = {}
local was_modifiable = {}
for _, bufnr in ipairs(buffers) do
was_modifiable[bufnr] = vim.bo[bufnr].modifiable
-- Lock the buffer to prevent race conditions
vim.bo[bufnr].modifiable = false
if vim.bo[bufnr].modified then
@ -447,6 +450,11 @@ M.try_write_changes = function(confirm)
end
end
end
local function unlock()
for _, bufnr in ipairs(buffers) do
vim.bo[bufnr].modifiable = was_modifiable[bufnr]
end
end
local ns = vim.api.nvim_create_namespace("Oil")
vim.diagnostic.reset(ns)
@ -469,17 +477,17 @@ M.try_write_changes = function(confirm)
vim.api.nvim_win_set_buf(0, bufnr)
pcall(vim.api.nvim_win_set_cursor, 0, { errs[1].lnum + 1, errs[1].col })
end
return
return unlock()
end
local actions = M.create_actions_from_diffs(all_diffs)
disclaimer.show(function(disclaimed)
if not disclaimed then
return
return unlock()
end
preview.show(actions, confirm, function(proceed)
if not proceed then
return
return unlock()
end
M.process_actions(