1
0
Fork 0
chezmoi/dot_config/nvim/lua/configs/packages/conform.lua

88 lines
2.6 KiB
Lua

local ensure = {
'hadolint',
'php-cs-fixer',
'ansible-lint',
}
return {
'stevearc/conform.nvim',
cmd = { 'ConformInfo' },
keys = {
{
-- Customize or remove this keymap to your liking
'<leader>F',
function()
require('conform').format({ async = true, lsp_fallback = true })
end,
mode = '',
desc = 'Format buffer',
},
},
-- Everything in opts will be passed to setup()
opts = {
-- Define your formatters
formatters_by_ft = {
-- lua = { "stylua" },
-- javascript = { { "prettierd", "prettier" } },
dockerfile = { 'hadolint' },
php = { 'php_cs_fixer' },
json = { 'jq' },
just = { 'just' },
},
-- Set up format-on-save
-- format_on_save = { timeout_ms = 500, lsp_fallback = true },
-- Customize formatters
formatters = {
php_cs_fixer = { ---{{{
args = {
'fix',
'--rules',
[[{
"@Symfony": true,
"fully_qualified_strict_types": false,
"array_syntax": {
"syntax": "short"
},
"nullable_type_declaration_for_default_null_value": true,
"binary_operator_spaces": {
"default": "single_space",
"operators": {
">>=": "align_single_space_minimal",
"<<=": "align_single_space_minimal",
"/=": "align_single_space_minimal",
"*=": "align_single_space_minimal",
"^=": "align_single_space_minimal",
"%=": "align_single_space_minimal",
"=>": "align_single_space_minimal",
"|=": "align_single_space_minimal",
".=": "align_single_space_minimal",
"<=": "align_single_space_minimal",
">=": "align_single_space_minimal",
"+=": "align_single_space_minimal",
"**=": "align_single_space_minimal",
"&=": "align_single_space_minimal",
"=": "align_single_space_minimal",
"-=": "align_single_space_minimal",
"??=": "align_single_space_minimal"
}
}
}]],
'$FILENAME',
},
}, -- }}}
},
},
config = function(_, opts)
for _, pkg in pairs(ensure) do
local p = require('mason-registry').get_package(pkg)
if not p:is_installed() then
p:install()
end
end
require('conform').setup(opts)
end,
init = function()
-- If you want the formatexpr, here is the place to set it
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
end,
}