return { { -- Autoformat '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) -- Filetypes to apply formatting to on save. Remove from this list -- to disable formatting on save for that filetype. local filetypes = { 'lua', 'rust', } local lsp_format_opt if filetypes[vim.bo[bufnr].filetype] then lsp_format_opt = 'fallback' else lsp_format_opt = 'never' end return { timeout_ms = 500, lsp_format = lsp_format_opt, } end, formatters_by_ft = { lua = { 'stylua' }, yaml = { 'yamlfmt' }, c = { 'clang-format' }, }, formatters = { ['yamlfmt'] = { prepend_args = { '-formatter', 'retain_line_breaks_single=true,trim_trailing_whitespace=true' }, }, -- all of the builtin clang-format styles are pretty bad IMHO. don't fallback to any. -- unfortunately, `--fallback-style` doesn't allow inline customization like the -- `--style` option does. -- i really can't say that i'm impressed with clang-format overall ... ['clang-format'] = { prepend_args = { '--style=file', '--fallback-style=none' }, }, }, }, }, } -- vim: ts=2 sts=2 sw=2 et