94 lines
2.5 KiB
Lua
94 lines
2.5 KiB
Lua
return {
|
|
"jose-elias-alvarez/null-ls.nvim",
|
|
event = "VimEnter",
|
|
config = function()
|
|
local null_ls = require("null-ls")
|
|
local use_google = require("utils").use_google
|
|
local TableConcat = require("utils").TableConcat
|
|
|
|
local sources = {
|
|
-- *
|
|
null_ls.builtins.formatting.trim_whitespace,
|
|
-- Catch insensitive, inconsiderate writing.
|
|
null_ls.builtins.diagnostics.alex,
|
|
|
|
-- Codespell finds common misspellings in text files.
|
|
null_ls.builtins.diagnostics.codespell,
|
|
-- null_ls.builtins.diagnostics.cspell, null_ls.builtins.code_actions.cspell,
|
|
|
|
-- An English prose linter. Can fix some issues via code actions.
|
|
null_ls.builtins.code_actions.proselint,
|
|
|
|
-- Reformats Java source code according to Google Java Style.
|
|
null_ls.builtins.formatting.google_java_format,
|
|
|
|
-- XML
|
|
-- null_ls.builtins.diagnostics.tidy,
|
|
-- null_ls.builtins.formatting.xmlformat,
|
|
-- null_ls.builtins.formatting.xq,
|
|
-- null_ls.builtins.formatting.xmllint.with({ extra_args = { "--pretty", "2" } }),
|
|
null_ls.builtins.formatting.tidy.with({
|
|
filetypes = { "xml" },
|
|
args = {
|
|
"-xml",
|
|
"-quiet",
|
|
"-wrap",
|
|
"--tidy-mark",
|
|
"no",
|
|
"--indent",
|
|
"yes",
|
|
"--indent-spaces",
|
|
"2",
|
|
"--indent-attributes",
|
|
"yes",
|
|
"--sort-attributes",
|
|
"alpha",
|
|
"--wrap-attributes",
|
|
"yes",
|
|
"--vertical-space",
|
|
"yes",
|
|
"-",
|
|
},
|
|
}),
|
|
null_ls.builtins.formatting.stylua,
|
|
}
|
|
|
|
if not use_google then
|
|
TableConcat(sources, {
|
|
-- Bazel
|
|
null_ls.builtins.diagnostics.buildifier,
|
|
null_ls.builtins.formatting.buildifier,
|
|
-- Golang
|
|
null_ls.builtins.diagnostics.golangci_lint,
|
|
null_ls.builtins.formatting.gofmt,
|
|
null_ls.builtins.formatting.goimports_reviser,
|
|
-- Misc
|
|
null_ls.builtins.formatting.htmlbeautifier,
|
|
null_ls.builtins.formatting.jq,
|
|
null_ls.builtins.formatting.mdformat,
|
|
})
|
|
end
|
|
|
|
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
|
|
null_ls.setup({
|
|
on_init = function(new_client, _)
|
|
new_client.offset_encoding = "utf-8"
|
|
end,
|
|
sources = sources,
|
|
-- you can reuse a shared lspconfig on_attach callback here
|
|
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({ async = false })
|
|
end,
|
|
})
|
|
end
|
|
end,
|
|
})
|
|
end,
|
|
}
|