fix: unlock buffers if we cancel the actions (#4)
This commit is contained in:
parent
f70d796c80
commit
0d6ee144d2
1 changed files with 11 additions and 3 deletions
|
|
@ -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(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue