From 8d11a2abf3039b1974d4acd65fbc83ada2ca1084 Mon Sep 17 00:00:00 2001 From: Steven Arcangeli Date: Wed, 22 Jan 2025 08:26:28 -0800 Subject: [PATCH] fix: error when non-current oil buffer has validation errors (#561) --- lua/oil/mutator/init.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lua/oil/mutator/init.lua b/lua/oil/mutator/init.lua index f15c069..9bff041 100644 --- a/lua/oil/mutator/init.lua +++ b/lua/oil/mutator/init.lua @@ -553,10 +553,13 @@ M.try_write_changes = function(confirm, cb) { all_errors[curbuf][1].lnum + 1, all_errors[curbuf][1].col } ) else - ---@diagnostic disable-next-line: param-type-mismatch - local bufnr, errs = next(pairs(all_errors)) - vim.api.nvim_win_set_buf(0, bufnr) - pcall(vim.api.nvim_win_set_cursor, 0, { errs[1].lnum + 1, errs[1].col }) + local bufnr, errs = next(all_errors) + -- HACK: This is a workaround for the fact that we can't switch buffers in the middle of a + -- BufWriteCmd. + vim.schedule(function() + vim.api.nvim_win_set_buf(0, bufnr) + pcall(vim.api.nvim_win_set_cursor, 0, { errs[1].lnum + 1, errs[1].col }) + end) end unlock() cb("Error parsing oil buffers")