diff --git a/lua/astrocommunity/editing-support/auto-save-nvim/README.md b/lua/astrocommunity/editing-support/auto-save-nvim/README.md index 8974f6780..b5e5a57c8 100644 --- a/lua/astrocommunity/editing-support/auto-save-nvim/README.md +++ b/lua/astrocommunity/editing-support/auto-save-nvim/README.md @@ -2,4 +2,4 @@ 🧶 Automatically save your changes in NeoVim -**Repository:** +**Repository:** diff --git a/lua/astrocommunity/editing-support/auto-save-nvim/init.lua b/lua/astrocommunity/editing-support/auto-save-nvim/init.lua index 4ac684f8a..33fdec3b9 100644 --- a/lua/astrocommunity/editing-support/auto-save-nvim/init.lua +++ b/lua/astrocommunity/editing-support/auto-save-nvim/init.lua @@ -1,30 +1,40 @@ +local group = vim.api.nvim_create_augroup("autosave", {}) + +-- Disable autoformat before saving +vim.api.nvim_create_autocmd("User", { + pattern = "AutoSaveWritePre", + group = group, + callback = function() + -- save global autoformat status + vim.g.OLD_AUTOFORMAT = vim.g.autoformat + vim.g.autoformat = false + vim.g.OLD_AUTOFORMAT_BUFFERS = {} + -- disable all manually enabled buffers + for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do + if vim.b[bufnr].autoformat then + table.insert(vim.g.OLD_AUTOFORMAT_BUFFERS, bufnr) + vim.b[bufnr].autoformat = false + end + end + end, +}) + +-- Re-enable autoformat after saving +vim.api.nvim_create_autocmd("User", { + pattern = "AutoSaveWritePost", + group = group, + callback = function() + -- restore global autoformat status + vim.g.autoformat = vim.g.OLD_AUTOFORMAT + -- re-enable all manually enabled buffers + for _, bufnr in ipairs(vim.g.OLD_AUTOFORMAT_BUFFERS or {}) do + vim.b[bufnr].autoformat = true + end + end, +}) + return { - "Pocco81/auto-save.nvim", + "okuuva/auto-save.nvim", event = { "User AstroFile", "InsertEnter" }, - opts = { - callbacks = { - before_saving = function() - -- save global autoformat status - vim.g.OLD_AUTOFORMAT = vim.g.autoformat_enabled - - vim.g.autoformat_enabled = false - vim.g.OLD_AUTOFORMAT_BUFFERS = {} - -- disable all manually enabled buffers - for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do - if vim.b[bufnr].autoformat_enabled then - table.insert(vim.g.OLD_BUFFER_AUTOFORMATS, bufnr) - vim.b[bufnr].autoformat_enabled = false - end - end - end, - after_saving = function() - -- restore global autoformat status - vim.g.autoformat_enabled = vim.g.OLD_AUTOFORMAT - -- reenable all manually enabled buffers - for _, bufnr in ipairs(vim.g.OLD_AUTOFORMAT_BUFFERS or {}) do - vim.b[bufnr].autoformat_enabled = true - end - end, - }, - }, + opts = {}, }