Initial commit
This commit is contained in:
128
home/editors/nvim/plugins/formatting/conform.nix
Normal file
128
home/editors/nvim/plugins/formatting/conform.nix
Normal file
@@ -0,0 +1,128 @@
|
||||
{pkgs, ...}: {
|
||||
extraPackages = with pkgs; [
|
||||
shfmt
|
||||
shellcheck
|
||||
stylua
|
||||
alejandra
|
||||
|
||||
prettier
|
||||
prettierd
|
||||
|
||||
sqruff
|
||||
|
||||
yamlfmt
|
||||
|
||||
black
|
||||
|
||||
go
|
||||
gotools
|
||||
google-java-format
|
||||
ktlint
|
||||
rustfmt
|
||||
clang-tools
|
||||
cmake-format
|
||||
|
||||
kdePackages.qtdeclarative # qmlformat
|
||||
];
|
||||
|
||||
plugins.conform-nvim = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
notifyOnError = true;
|
||||
|
||||
formatters_by_ft = let
|
||||
prettier = {
|
||||
__unkeyed-1 = "prettierd";
|
||||
__unkeyed-2 = "prettier";
|
||||
timeout_ms = 2000;
|
||||
stop_after_first = true;
|
||||
};
|
||||
in {
|
||||
sh = ["shellcheck" "shfmt"];
|
||||
lua = ["stylua"];
|
||||
nix = ["alejandra"];
|
||||
|
||||
html = prettier;
|
||||
css = prettier;
|
||||
javascript = prettier;
|
||||
typescript = prettier;
|
||||
javascriptreact = prettier;
|
||||
typescriptreact = prettier;
|
||||
|
||||
sql = ["sqruff"];
|
||||
|
||||
json = prettier;
|
||||
yaml = ["yamlfmt"];
|
||||
|
||||
python = ["black"];
|
||||
|
||||
go = ["goimports" "gofmt"];
|
||||
java = ["google-java-format"];
|
||||
kotlin = ["ktlint"];
|
||||
rust = ["rustfmt"];
|
||||
c = ["clang_format"];
|
||||
cmake = ["cmake_format"];
|
||||
cpp = ["clang_format"];
|
||||
|
||||
qml = ["qmlformat"];
|
||||
qmljs = ["qmlformat"];
|
||||
|
||||
"_" = ["trim_whitespace" "trim_newlines"];
|
||||
};
|
||||
|
||||
formatters = {
|
||||
prettier = {
|
||||
command = "prettier";
|
||||
prepend_args = ["-w"];
|
||||
};
|
||||
prettierd = {
|
||||
command = "prettierd";
|
||||
prepend_args = ["-w"];
|
||||
};
|
||||
};
|
||||
|
||||
format_on_save =
|
||||
# lua
|
||||
''
|
||||
function(bufnr)
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
end
|
||||
|
||||
if vim.g.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 =
|
||||
# lua
|
||||
''
|
||||
function (bufnr)
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
end
|
||||
|
||||
if not vim.g.slow_format_filetypes[vim.bo[bufnr].filetype] then
|
||||
return
|
||||
end
|
||||
|
||||
return { lsp_fallback = true }
|
||||
end
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
extraConfigLua = ''
|
||||
vim.g.slow_format_filetypes = {};
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user