|
1 | | -local capabilities = require("lsp.handlers").capabilities |
2 | | - |
3 | | -local lspconfig = vim.lsp.config |
4 | | -if lspconfig then |
5 | | - -- Python |
6 | | - lspconfig("pyright", { |
7 | | - capabilities = capabilities, |
8 | | - filetypes = { "python" }, |
9 | | - }) |
10 | | - -- LUA |
11 | | - lspconfig("lua_ls", { |
12 | | - settings = { |
13 | | - Lua = { |
14 | | - runtime = { |
15 | | - -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) |
16 | | - version = "LuaJIT", |
17 | | - }, |
18 | | - diagnostics = { |
19 | | - -- Get the language server to recognize the `vim` global |
20 | | - globals = { "vim" }, |
21 | | - }, |
22 | | - workspace = { |
23 | | - -- Make the server aware of Neovim runtime files |
24 | | - library = vim.api.nvim_get_runtime_file("", true), |
25 | | - }, |
26 | | - -- Do not send telemetry data containing a randomized but unique identifier |
27 | | - telemetry = { |
28 | | - enable = false, |
29 | | - }, |
30 | | - }, |
31 | | - }, |
32 | | - }) |
33 | | - -- Rust |
34 | | - lspconfig("rust_analyzer", { |
35 | | - on_attach = function(client, bufnr) |
36 | | - require("lsp.handlers").on_attach(client, bufnr) |
37 | | - -- vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) |
38 | | - end, |
39 | | - -- capabilities = capabilities, |
40 | | - settings = { |
41 | | - ["rust-analyzer"] = { |
42 | | - diagnostics = { |
43 | | - enable = true, |
44 | | - }, |
45 | | - imports = { |
46 | | - granularity = { |
47 | | - group = "module", |
48 | | - }, |
49 | | - prefix = "self", |
50 | | - }, |
51 | | - cargo = { |
52 | | - buildScripts = { |
53 | | - enable = true, |
54 | | - }, |
55 | | - }, |
56 | | - procMacro = { |
57 | | - enable = true, |
58 | | - }, |
59 | | - }, |
60 | | - }, |
61 | | - }) |
62 | | - |
63 | | - -- Clangd (C++) |
64 | | - lspconfig("clangd", { |
65 | | - autostart = true, |
66 | | - capabilities = capabilities, |
67 | | - }) |
68 | | - |
69 | | - -- Bash |
70 | | - lspconfig("bashls", { |
71 | | - autostart = true, |
72 | | - }) |
73 | | - |
74 | | - -- Javascript/Typescript |
75 | | - lspconfig("eslint", { |
76 | | - capabilities = capabilities, |
77 | | - settings = { |
78 | | - packageManager = "npm", |
79 | | - }, |
80 | | - on_attach = function(client, bufnr) |
81 | | - vim.api.nvim_create_autocmd("BufWritePre", { |
82 | | - buffer = bufnr, |
83 | | - command = "EslintFixAll", |
84 | | - }) |
85 | | - end, |
86 | | - }) |
87 | | - |
88 | | - -- HTML |
89 | | - lspconfig("html", { |
90 | | - autostart = true, |
91 | | - capabilities = capabilities, |
92 | | - }) |
93 | | - |
94 | | - -- CSS |
95 | | - lspconfig("cssls", { |
96 | | - capabilities = capabilities, |
97 | | - }) |
98 | | - |
99 | | - -- Dockerfile |
100 | | - lspconfig("dockerls", { |
101 | | - autostart = true, |
102 | | - capabilities = capabilities, |
103 | | - }) |
104 | | - |
105 | | - -- Docker compose |
106 | | - lspconfig("docker_compose_language_service", { |
107 | | - autostart = true, |
108 | | - capabilities = capabilities, |
109 | | - }) |
110 | | - |
111 | | - -- VUE |
112 | | - lspconfig("vue", { |
113 | | - autostart = false, |
114 | | - capabilities = capabilities, |
115 | | - }) |
116 | | - |
117 | | - -- YAMLs — diagnostics only, no completion |
118 | | - lspconfig("yamlls", { |
119 | | - autostart = true, |
120 | | - capabilities = capabilities, |
121 | | - settings = { |
122 | | - yaml = { |
123 | | - validate = true, |
124 | | - hover = true, |
125 | | - completion = false, |
126 | | - schemaStore = { |
127 | | - enable = true, |
128 | | - url = "https://www.schemastore.org/api/json/catalog.json", |
129 | | - }, |
130 | | - schemas = { |
131 | | - -- Kubernetes manifests in common SRE directory layouts |
132 | | - kubernetes = { |
133 | | - "manifests/**/*.yaml", |
134 | | - "k8s/**/*.yaml", |
135 | | - "kubernetes/**/*.yaml", |
136 | | - "deploy/**/*.yaml", |
137 | | - "templates/**/*.yaml", |
138 | | - "chart/templates/**/*.yaml", |
139 | | - }, |
140 | | - }, |
141 | | - }, |
142 | | - }, |
143 | | - }) |
144 | | - |
145 | | - -- CMake Language Server |
146 | | - lspconfig("cmake", { |
147 | | - autostart = false, |
148 | | - capabilities = capabilities, |
149 | | - }) |
150 | | - |
151 | | - -- Elixir Language Server |
152 | | - lspconfig("elixirls", { |
153 | | - autostart = false, |
154 | | - capabilities = capabilities, |
155 | | - }) |
156 | | - |
157 | | - -- Erlang Language Server |
158 | | - -- lspconfig("erlangls", { |
159 | | - -- autostart = false, |
160 | | - -- capabilities = capabilities, |
161 | | - -- }) |
162 | | - |
163 | | - -- Go Language Server |
164 | | - lspconfig("gopls", { |
165 | | - autostart = true, |
166 | | - capabilities = capabilities, |
167 | | - settings = { |
168 | | - gopls = { |
169 | | - analyses = { |
170 | | - unusedparams = true, |
171 | | - shadow = true, |
172 | | - }, |
173 | | - staticcheck = true, |
174 | | - gofumpt = true, |
175 | | - }, |
176 | | - }, |
177 | | - }) |
178 | | - |
179 | | - -- Gradle Language Server |
180 | | - lspconfig("gradle_ls", { |
181 | | - autostart = false, |
182 | | - capabilities = capabilities, |
183 | | - }) |
184 | | - |
185 | | - -- -- Groovy Language Server |
186 | | - lspconfig("groovyls", { |
187 | | - autostart = false, |
188 | | - capabilities = capabilities, |
189 | | - }) |
190 | | - |
191 | | - -- Helm Language Server |
192 | | - lspconfig("helm_ls", { |
193 | | - autostart = true, |
194 | | - capabilities = capabilities, |
195 | | - settings = { |
196 | | - ['helm-ls'] = { |
197 | | - logLevel = "info", |
198 | | - valuesFiles = { |
199 | | - mainValuesFile = "values.yaml", |
200 | | - lintOverlayValuesFile = "values.lint.yaml", |
201 | | - additionalValuesFilesGlobPattern = "values*.yaml", |
202 | | - }, |
203 | | - yamlls = { |
204 | | - enabled = true, |
205 | | - diagnosticsLimit = 50, |
206 | | - showDiagnosticsDirectly = false, |
207 | | - path = "yaml-language-server", |
208 | | - config = { |
209 | | - schemas = { |
210 | | - kubernetes = "templates/**", |
211 | | - }, |
212 | | - completion = true, |
213 | | - hover = true, |
214 | | - }, |
215 | | - }, |
216 | | - }, |
217 | | - }, |
218 | | - }) |
219 | | - |
220 | | - -- Json Language Server |
221 | | - lspconfig("jsonls", { |
222 | | - autostart = false, |
223 | | - capabilities = capabilities, |
224 | | - }) |
225 | | - |
226 | | - -- Kotlin LS |
227 | | - lspconfig("kotlin_language_server", { |
228 | | - autostart = false, |
229 | | - capabilities = capabilities, |
230 | | - }) |
231 | | - |
232 | | - -- Make Language Server |
233 | | - lspconfig("autotools_ls", { |
234 | | - autostart = false, |
235 | | - capabilities = capabilities, |
236 | | - }) |
237 | | - |
238 | | - -- Powershell Language Server |
239 | | - lspconfig("powershell_es", { |
240 | | - autostart = false, |
241 | | - capabilities = capabilities, |
242 | | - }) |
243 | | - |
244 | | - -- SQL Language Server |
245 | | - lspconfig("sqlls", { |
246 | | - autostart = false, |
247 | | - capabilities = capabilities, |
248 | | - }) |
249 | | - |
250 | | - -- Terraform Language Server |
251 | | - lspconfig("terraformls", { |
252 | | - autostart = true, |
253 | | - capabilities = capabilities, |
254 | | - }) |
255 | | - |
256 | | -end |
| 1 | +local handlers = require("lsp.handlers") |
| 2 | + |
| 3 | +-- Capabilities applied globally to every server; per-server settings live in after/lsp/<name>.lua |
| 4 | +vim.lsp.config('*', { |
| 5 | + capabilities = handlers.capabilities, |
| 6 | +}) |
| 7 | + |
| 8 | +-- Global on_attach via autocmd — survives any per-server on_attach overrides |
| 9 | +vim.api.nvim_create_autocmd("LspAttach", { |
| 10 | + callback = function(args) |
| 11 | + local client = vim.lsp.get_client_by_id(args.data.client_id) |
| 12 | + if client then |
| 13 | + handlers.on_attach(client, args.buf) |
| 14 | + end |
| 15 | + end, |
| 16 | +}) |
0 commit comments