-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathnull-ls.lua
More file actions
129 lines (120 loc) · 3.07 KB
/
null-ls.lua
File metadata and controls
129 lines (120 loc) · 3.07 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
local null_ls = require("null-ls")
-- register any number of sources simultaneously
local sources = {
null_ls.builtins.formatting.prettierd.with({
filetypes = {
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"vue",
"css",
"scss",
"less",
"html",
"json",
"jsonc",
"yaml",
"markdown",
"graphql",
"handlebars",
},
}),
-- null_ls.builtins.formatting.jq,
-- xml
-- null_ls.builtins.formatting.xmllint,
-- toml
-- null_ls.builtins.formatting.taplo,
-- sh
null_ls.builtins.formatting.shfmt,
-- lua
null_ls.builtins.formatting.stylua,
-- word
null_ls.builtins.diagnostics.write_good.with({
method = null_ls.methods.DIAGNOSTICS_ON_SAVE,
}),
-- md
-- null_ls.builtins.diagnostics.markdownlint.with({
-- method = null_ls.methods.DIAGNOSTICS_ON_SAVE,
-- }),
-- null_ls.builtins.code_actions.gitsigns,
-- sql
null_ls.builtins.formatting.sql_formatter.with({
filetypes = {
"sql",
"mysql",
},
}),
-- null_ls.builtins.formatting.google_java_format,
-- null_ls.builtins.diagnostics.semgrep,
-- null_ls.builtins.diagnostics.semgrep.with({
-- method = null_ls.methods.DIAGNOSTICS_ON_SAVE,
-- extra_args = { "--config", "p/java" },
-- }),
null_ls.builtins.formatting.gofmt,
-- null_ls.builtins.formatting.clang_format.with({
-- filetypes = {
-- "c",
-- "cpp",
-- },
-- }),
null_ls.builtins.formatting.nginx_beautifier,
-- python
null_ls.builtins.formatting.black,
-- swift
null_ls.builtins.formatting.swiftformat,
}
local lsp_formatting = function(bufnr)
vim.lsp.buf.format({
filter = function(client)
-- apply whatever logic you want (in this example, we'll only use null-ls)
return client.name == "null-ls"
end,
bufnr = bufnr,
})
end
-- if you want to set up formatting on save, you can use this as a callback
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
-- add to your shared on_attach callback
local 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
if "Y" == vim.env["SEMGREP_ENABLE"] then
table.insert(sources, null_ls.builtins.diagnostics.semgrep)
end
if "Y" == vim.env["PMD_ENABLE"] then
table.insert(
sources,
null_ls.builtins.diagnostics.pmd.with({
filetypes = {
"java",
"jsp",
},
args = {
"check",
"--format",
"json",
"--dir",
"$FILENAME",
},
extra_args = {
"--rulesets",
"category/java/bestpractices.xml,category/jsp/bestpractices.xml",
},
})
)
end
null_ls.setup({
sources = sources,
})
require("null-ls").register(require("none-ls-shellcheck.diagnostics"))
require("null-ls").register(require("none-ls-shellcheck.code_actions"))