2023-06-21 23:44:34 +02:00
|
|
|
local null_present, null = pcall(require, "null-ls")
|
|
|
|
|
|
|
|
if not null_present then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
2023-02-11 02:36:46 +01:00
|
|
|
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
|
|
|
|
|
|
|
|
null.setup({
|
|
|
|
sources = {
|
|
|
|
null.builtins.formatting.alejandra,
|
|
|
|
null.builtins.formatting.black,
|
|
|
|
null.builtins.formatting.deno_fmt.with({
|
|
|
|
filetypes = {
|
|
|
|
"javascript",
|
|
|
|
"javascriptreact",
|
|
|
|
"typescript",
|
|
|
|
"typescriptreact",
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
null.builtins.formatting.gofumpt,
|
|
|
|
null.builtins.formatting.isort,
|
2023-07-01 20:23:44 +02:00
|
|
|
null.builtins.formatting.prettier.with({
|
|
|
|
filetypes = {
|
|
|
|
"astro",
|
|
|
|
},
|
|
|
|
}),
|
2023-07-04 21:20:01 +02:00
|
|
|
null.builtins.formatting.rustfmt,
|
2023-02-11 02:36:46 +01:00
|
|
|
null.builtins.formatting.shfmt,
|
|
|
|
null.builtins.formatting.stylua,
|
|
|
|
null.builtins.formatting.taplo,
|
|
|
|
null.builtins.diagnostics.alex,
|
|
|
|
null.builtins.diagnostics.proselint,
|
|
|
|
null.builtins.hover.dictionary,
|
2023-03-06 11:27:11 +01:00
|
|
|
null.builtins.hover.printenv,
|
2023-02-11 02:36:46 +01:00
|
|
|
},
|
|
|
|
on_attach = function(client, bufnr)
|
|
|
|
if client.supports_method("textDocument/formatting") then
|
|
|
|
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
|
|
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
|
|
|
group = augroup,
|
|
|
|
buffer = bufnr,
|
|
|
|
callback = function()
|
|
|
|
vim.lsp.buf.format({
|
|
|
|
bufnr = bufnr,
|
|
|
|
filter = function(c)
|
|
|
|
return c.name == "null-ls"
|
|
|
|
end,
|
|
|
|
})
|
|
|
|
end,
|
|
|
|
})
|
|
|
|
end
|
|
|
|
end,
|
|
|
|
})
|
|
|
|
|
|
|
|
local toggle_formatters = function()
|
|
|
|
null.toggle({ methods = null.methods.FORMATTING })
|
|
|
|
end
|
|
|
|
|
|
|
|
vim.api.nvim_create_user_command("ToggleFormatters", toggle_formatters, {})
|