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