aboutsummaryrefslogtreecommitdiff
path: root/lua/plugins/null-ls.lua
blob: 41fba1a00b9a761e4e3e7d3a42a38eeef59900f6 (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
51
52
53
54
55
56
57
58
local null_ls_status_ok, null_ls = pcall(require, "null-ls")
if not null_ls_status_ok then
	return
end
--[[null-ls.]]
--
-- null-language-server i.e. a sort of language server which does not provide any services such as formatting and diagnostics you expect from a language server. Instead it will need to install corresponding external “sources” and then hook these sources into the neovim lsp client through null-ls.
--

null_ls.setup({
	debug = true,
  disabled_filetypes = { "PKGBUILD" },
	sources = {
		require("null-ls").builtins.formatting.stylua, -- lua formatting
		require("null-ls").builtins.formatting.prettier.with({ -- markdown, html/js formatting
			filetypes = { "html", "css", "javascript", "javascriptreact", "markdown", "json", "yaml" },
		}),
		require("null-ls").builtins.formatting.shfmt.with({ -- shell script formatting
			filetypes = { ".bash", ".zsh", ".sh", "bash", "zsh", "sh" },
      --filetypes = { "bash", "zsh", "sh" },
		}),
		require("null-ls").builtins.diagnostics.shellcheck, -- shell script diagnostics
    require("null-ls").builtins.code_actions.shellcheck, -- shell script code actions
		require("null-ls").builtins.diagnostics.zsh, -- shell script diagnostics
    require("null-ls").builtins.formatting.shfmt,
    require("null-ls").builtins.formatting.black,
		require("null-ls").builtins.formatting.prettierd,
		require("null-ls").builtins.diagnostics.cspell.with {
    filetypes = { "python", "rust", "typescript" },
  },
		--require("null-ls").builtins.diagnostics.luacheck,
		--require("null-ls").builtins.diagnostics.eslint,
		--require("null-ls").builtins.diagnostics.eslint_d,
		require("null-ls").builtins.diagnostics.mdl,
		require("null-ls").builtins.diagnostics.vint,
		--require("null-ls").builtins.code_actions.eslint_d,
    require("null-ls").builtins.completion.spell,
    require("null-ls").builtins.formatting.clang_format,
    require("null-ls").builtins.formatting.rustfmt,
    require("null-ls").builtins.formatting.sql_formatter,
    require("null-ls").builtins.formatting.stylua,
    --require("null-ls").builtins.formatting.google_java_format,
    require("null-ls").builtins.formatting.shellharden,
    require("null-ls").builtins.diagnostics.cppcheck,
	},
	on_attach = function(client, bufnr)
		if client.server_capabilities.document_formatting then
			local group = vim.api.nvim_create_augroup("NullLsFormatting", { clear = true })
			vim.api.nvim_create_autocmd("BufWritePre", {
				callback = function()
					vim.lsp.buf.formatting_sync(nil, 4000)
				end,
				buffer = bufnr,
				group = group,
			})
		end
	end,
})