kickstart.nvim/lua/custom/plugins/formatting.lua

49 lines
1.3 KiB
Lua
Executable File

return {
'stevearc/conform.nvim',
dependencies = {
'nvim-lua/plenary.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',
},
event = { 'BufReadPre', 'BufNewFile' },
opts = function()
local formatters_by_ft = {
lua = { 'stylua' },
python = function(bufnr)
if require('conform').get_formatter_info('ruff_format', bufnr).available then
return { 'isort', 'ruff_format', 'ruff_fix' }
else
return { 'isort', 'black' }
end
end,
go = { 'gofumpt', 'goimports' },
yaml = { 'prettier' }, -- Added YAML formatter
bash = { 'shfmt' }, -- Added Bash formatter
rust = { 'rustfmt' }, -- Added Rust formatter
dockerfile = { 'hadolint' }, -- Added Dockerfile formatter
}
require('conform').setup({
formatters_by_ft = formatters_by_ft,
format_on_save = {
lsp_fallback = true,
timeout_ms = 500,
},
})
require('mason-tool-installer').setup({
ensure_installed = {
'stylua', -- Lua
'ruff', -- Python
'isort', -- Python
'black', -- Python
'gofumpt', -- Go
'goimports', -- Go
'prettier', -- YAML, JSON, etc.
'shfmt', -- Bash
'hadolint', -- Dockerfile
},
})
end,
}