diff --git a/nvim/.config/nvim/lua/plugins/odin.lua b/nvim/.config/nvim/lua/plugins/odin.lua index 2e68e37..ca89a31 100644 --- a/nvim/.config/nvim/lua/plugins/odin.lua +++ b/nvim/.config/nvim/lua/plugins/odin.lua @@ -1,4 +1,23 @@ require 'lspconfig'.ols.setup {} + +vim.api.nvim_create_user_command("FormatDisable", function(args) + if args.bang then + -- FormatDisable! will disable formatting just for this buffer + vim.b.disable_autoformat = true + else + vim.g.disable_autoformat = true + end +end, { + desc = "Disable autoformat-on-save", + bang = true, +}) +vim.api.nvim_create_user_command("FormatEnable", function() + vim.b.disable_autoformat = false + vim.g.disable_autoformat = false +end, { + desc = "Re-enable autoformat-on-save", +}) + return { { "stevearc/conform.nvim", @@ -18,10 +37,13 @@ return { formatters_by_ft = { odin = { "odinfmt" }, }, - format_on_save = { - lsp_format = "fallback", - timeout_ms = 500, - } + format_on_save = function(bufnr) + -- Disable with a global or buffer-local variable + if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then + return + end + return { timeout_ms = 500, lsp_format = "fallback" } + end, }, } }