-- lua/plugins/conform.lua -- Code formatting via conform.nvim return { 'stevearc/conform.nvim', event = { 'BufWritePre' }, cmd = { 'ConformInfo' }, keys = { { 'f', function() require('conform').format { async = true, lsp_format = 'fallback' } end, mode = '', desc = '[F]ormat buffer', }, }, opts = { notify_on_error = false, format_on_save = function(bufnr) -- Disable lsp_fallback for languages without a standardized style. local disable_filetypes = { c = true, cpp = true } if disable_filetypes[vim.bo[bufnr].filetype] then return nil end return { timeout_ms = 500, lsp_format = 'fallback' } end, formatters = { yamlfmt = { prepend_args = { '-conf', vim.fn.expand '~/.config/yamlfmt/.yamlfmt' }, }, }, formatters_by_ft = { lua = { 'stylua' }, python = { 'black' }, javascript = { 'biome', 'prettier', stop_after_first = true }, typescript = { 'biome', 'prettier', stop_after_first = true }, javascriptreact = { 'biome', 'prettier', stop_after_first = true }, typescriptreact = { 'biome', 'prettier', stop_after_first = true }, json = { 'biome', 'prettier', stop_after_first = true }, html = { 'prettier' }, css = { 'prettier' }, graphql = { 'prettier' }, yaml = { 'yamlfmt' }, }, }, }