summaryrefslogtreecommitdiff
path: root/plugins/null-ls.lua
blob: a2a71f1d5f9bacecba96c838feb177067e096a3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
return function()
	local null_ls = require("null-ls")
	local diagnostics = null_ls.builtins.diagnostics
	local formatting = null_ls.builtins.formatting

	local lsp_formatting = function(bufnr)
		vim.lsp.buf.format({
			filter = function(client)
				return client.name == "null-ls"
			end,
			bufnr = bufnr,
		})
	end

	local augroup = vim.api.nvim_create_augroup("LspFormatting", {})

	null_ls.setup({
		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()
						lsp_formatting(bufnr)
					end,
				})
			end
		end,
		sources = {
			diagnostics.actionlint,
			diagnostics.alex,
			diagnostics.codespell,
			diagnostics.deadnix,
			diagnostics.pylint,
			diagnostics.shellcheck,
			diagnostics.statix,
			formatting.alejandra,
			formatting.beautysh,
			formatting.codespell,
			formatting.just,
			formatting.nimpretty,
			formatting.prettier,
			formatting.rustfmt,
			formatting.shellharden,
			formatting.stylua,
			formatting.yapf,
		},
	})
end