return { { -- Autoformat "stevearc/conform.nvim", lazy = false, keys = { { "f", function() require("conform").format({ async = true, lsp_fallback = true }) end, mode = "", desc = "[F]ormat buffer", }, }, opts = { notify_on_error = false, -- format_on_save = function(bufnr) -- -- Disable "format_on_save lsp_fallback" for languages that don't -- -- have a well standardized coding style. You can add additional -- -- languages here or re-enable it for the disabled ones. -- local disable_filetypes = { c = true, cpp = true } -- return { -- timeout_ms = 500, -- lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype], -- } -- end, lang_to_ext = { c_sharp = "cs", }, formatters_by_ft = { lua = { "stylua" }, go = { "gofmt", "golines", "goimports-reviser" }, rust = { "rustfmt" }, c = { "clang-format" }, cpp = { "clang-format" }, cs = { "csharpier" }, h = { "clang-format" }, hpp = { "clang-format" }, nix = { "nixpkgs_fmt" }, -- Conform can also run multiple formatters sequentially python = { "isort", "black" }, -- -- You can use a sub-list to tell conform to run *until* a formatter -- is found. javascript = { { "prettierd", "prettier" } }, css = { "stylelint", "prettier" }, scss = { "stylelint", "prettier" }, }, }, config = function() vim.api.nvim_create_autocmd("BufWritePre", { pattern = "*", callback = function(args) require("conform").format({ bufnr = args.buf, lsp_fallback = true }) end, }) end, }, }