nixos-private-dots/nvim/lua/kickstart/plugins/autoformat.lua
2025-08-05 16:19:57 +03:00

53 lines
2 KiB
Lua

-- Autoformat
-- Timeout для форматирования пришлось задать в 5 секунд, потому что sqlfluff очень долго форматирует
return {
{
'stevearc/conform.nvim',
event = { 'BufWritePre' },
cmd = { 'ConformInfo' },
keys = {
{
'<leader>f',
function()
require('conform').format {
async = true,
lsp_format = 'fallback',
timeout_ms = 5000,
}
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 }
if disable_filetypes[vim.bo[bufnr].filetype] then
return nil
else
return {
timeout_ms = 5000,
lsp_format = 'fallback',
}
end
end,
formatters_by_ft = {
lua = { 'stylua' },
go = { 'gofmt', 'injected' },
-- ['*'] = { 'injected' }, -- enables injected-lang formatting for all filetypes
-- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" },
--
-- You can use 'stop_after_first' to run the first available formatter from the list
-- javascript = { "prettierd", "prettier", stop_after_first = true },
},
formatters = {},
},
},
}