snowflake/home/programs/editors/neovim/plugins/lsp/conform.nix

79 lines
1.6 KiB
Nix

{
pkgs,
lib,
...
}: {
programs.nixvim.plugins.conform-nvim = {
enable = true;
settings = {
formatters_by_ft = {
nix = [
[
"alejandra"
]
];
rust = [
[
"rustfmt"
]
];
go = [
[
"gofmt"
]
];
lua = [
[
"stylua"
]
];
};
format_on_save = ''
function(bufnr)
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
return
end
if slow_format_filetypes[vim.bo[bufnr].filetype] then
return
end
local function on_format(err)
if err and err:match("timeout$") then
slow_format_filetypes[vim.bo[bufnr].filetype] = true
end
end
return { timeout_ms = 200, lsp_fallback = true }, on_format
end
'';
format_after_save = ''
function(bufnr)
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
return
end
if not slow_format_filetypes[vim.bo[bufnr].filetype] then
return
end
return { lsp_fallback = true }
end
'';
formatters = {
alejandra = {
commmand = "${lib.getExe pkgs.alejandra}";
};
rustfmt = {
commmand = "${lib.getExe pkgs.rustfmt}";
};
gofmt = {
commmand = "${lib.getExe pkgs.go}";
};
stylua = {
commmand = "${lib.getExe pkgs.stylua}";
};
};
};
};
}