update conform formatting and lsp config

This commit is contained in:
Roel de Cort 2024-05-16 01:19:35 +02:00
parent cf4b3e253b
commit 041c9fb929
2 changed files with 165 additions and 19 deletions

View file

@ -1,23 +1,168 @@
{
lib,
pkgs,
...
}: {
config = {
extraConfigLuaPre =
# lua
''
local slow_format_filetypes = {}
vim.api.nvim_create_user_command("FormatDisable", function(args)
if args.bang then
-- FormatDisable! will disable formatting just for this buffer
vim.b.disable_autoformat = true
else
vim.g.disable_autoformat = true
end
end, {
desc = "Disable autoformat-on-save",
bang = true,
})
vim.api.nvim_create_user_command("FormatEnable", function()
vim.b.disable_autoformat = false
vim.g.disable_autoformat = false
end, {
desc = "Re-enable autoformat-on-save",
})
vim.api.nvim_create_user_command("FormatToggle", function(args)
if args.bang then
-- Toggle formatting for current buffer
vim.b.disable_autoformat = not vim.b.disable_autoformat
else
-- Toggle formatting globally
vim.g.disable_autoformat = not vim.g.disable_autoformat
end
end, {
desc = "Toggle autoformat-on-save",
bang = true,
})
'';
plugins.conform-nvim = {
enable = true;
formatOnSave = {
lspFallback = true;
timeoutMs = 500;
};
formatOnSave = ''
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
'';
formatAfterSave = ''
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
'';
#formatOnSave = {
# lspFallback = true;
# timeoutMs = 500;
#};
notifyOnError = true;
formattersByFt = {
liquidsoap = ["liquidsoap-prettier"];
html = [["prettierd" "prettier"]];
css = [["prettierd" "prettier"]];
javascript = [["prettierd" "prettier"]];
typescript = [["prettierd" "prettier"]];
python = ["black"];
html = [
[
"prettierd"
"prettier"
]
];
css = [
[
"prettierd"
"prettier"
]
];
javascript = [
[
"prettierd"
"prettier"
]
];
typescript = [
[
"prettierd"
"prettier"
]
];
python = [
"black"
"isort"
];
lua = ["stylua"];
nix = ["alejandra"];
markdown = [["prettierd" "prettier"]];
yaml = ["yamllint" "yamlfmt"];
terraform = ["terraform-fmt"];
markdown = [
[
"prettierd"
"prettier"
]
];
yaml = [
[
"prettierd"
"prettier"
]
];
terraform = ["terraform_fmt"];
bash = [
"shellcheck"
"shellharden"
"shfmt"
];
json = ["jq"];
"_" = ["trim_whitespace"];
};
formatters = {
black = {
command = "${lib.getExe pkgs.black}";
};
isort = {
command = "${lib.getExe pkgs.isort}";
};
alejandra = {
command = "${lib.getExe pkgs.alejandra}";
};
jq = {
command = "${lib.getExe pkgs.jq}";
};
prettierd = {
command = "${lib.getExe pkgs.prettierd}";
};
stylua = {
command = "${lib.getExe pkgs.stylua}";
};
shellcheck = {
command = "${lib.getExe pkgs.shellcheck}";
};
shfmt = {
command = "${lib.getExe pkgs.shfmt}";
};
shellharden = {
command = "${lib.getExe pkgs.shellharden}";
};
#yamlfmt = {
# command = "${lib.getExe pkgs.yamlfmt}";
#};
};
};
};
}

View file

@ -1,5 +1,6 @@
{
plugins = {
lsp-lines = {enable = true;};
lsp-format = {enable = true;};
lsp = {
enable = true;