Files
Neve/config/lsp/conform.nix
2025-02-06 17:45:39 +02:00

116 lines
2.9 KiB
Nix

{
lib,
config,
...
}: {
options = {
conform.enable = lib.mkEnableOption "Enable conform module";
};
config = lib.mkIf config.conform.enable {
plugins.conform-nvim = {
enable = true;
settings = {
notify_on_error = true;
# default_format_opts = {
# lsp_format = "fallback";
# };
# format_after_save = {
# lsp_format = "fallback";
# };
format_on_save = ''
function(bufnr)
-- Disable with a global or buffer-local variable
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
return
end
return { timeout_ms = 500, lsp_format = 'fallback' }
end
'';
formatters_by_ft = {
html = {
__unkeyed-1 = "prettierd";
__unkeyed-2 = "prettier";
stop_after_first = true;
};
css = {
__unkeyed-1 = "prettierd";
__unkeyed-2 = "prettier";
stop_after_first = true;
};
javascript = {
__unkeyed-1 = "prettierd";
__unkeyed-2 = "prettier";
stop_after_first = true;
};
javascriptreact = {
__unkeyed-1 = "prettierd";
__unkeyed-2 = "prettier";
stop_after_first = true;
};
typescript = {
__unkeyed-1 = "prettierd";
__unkeyed-2 = "prettier";
stop_after_first = true;
};
typescriptreact = {
__unkeyed-1 = "prettierd";
__unkeyed-2 = "prettier";
stop_after_first = true;
};
java = ["google-java-format"];
python = ["black"];
lua = ["stylua"];
nix = ["alejandra"];
typst = ["typstfmt"];
markdown = {
__unkeyed-1 = "prettierd";
__unkeyed-2 = "prettier";
stop_after_first = true;
};
rust = ["rustfmt"];
};
};
};
keymaps = [
{
mode = "n";
key = "<leader>uf";
action = ":FormatToggle<CR>";
options = {
desc = "Toggle Format Globally";
silent = true;
};
}
{
mode = "n";
key = "<leader>uF";
action = ":FormatToggle!<CR>";
options = {
desc = "Toggle Format Locally";
silent = true;
};
}
{
mode = "n";
key = "<leader>cf";
action = "<cmd>lua require('conform').format()<cr>";
options = {
silent = true;
desc = "Format Buffer";
};
}
{
mode = "v";
key = "<leader>cF";
action = "<cmd>lua require('conform').format()<cr>";
options = {
silent = true;
desc = "Format Lines";
};
}
];
};
}