|
133 | 133 | :test true} |
134 | 134 | :staticcheck true |
135 | 135 | :usePlaceholders true}}} |
136 | | - :lua_ls {:settings {:Lua {:diagnostics {:globals [:vim]}}}} |
| 136 | + :lua_ls {:filetypes [:lua] |
| 137 | + :settings {:Lua {:diagnostics {:globals [:vim]}}}} |
137 | 138 | ;:fennel_language_server {:default_config {:cmd [:$HOME/.local/bin/fennel-language-server] |
138 | 139 | ; :filetypes [:fennel] |
139 | 140 | ; :single_file_support true |
|
142 | 143 | ; :diagnostics {:globals [:vim |
143 | 144 | ; :module |
144 | 145 | ; :autoload]}}}}} |
145 | | - :pylsp {:settings {:pylsp {:plugins {:pycodestyle {:enable false |
| 146 | + :pylsp {:filetypes [:python] |
| 147 | + :settings {:pylsp {:plugins {:pycodestyle {:enable false |
146 | 148 | :ignore [;; continuation line indentation is not a multiple of four |
147 | 149 | :E121 |
148 | 150 | ;; expected 2 blank lines, found 1 |
|
160 | 162 | :pylsp_mypy {:enabled true |
161 | 163 | :live_mode true}}}} |
162 | 164 | :plugins {:rope_autoimport {:enabled true}}} |
| 165 | + :bashls {:filetypes [:bash :sh :zsh]} |
| 166 | + :dockerls {:filetypes [:dockerfile]} |
| 167 | + :jsonls {:filetypes [:json :jsonc]} |
| 168 | + :sqlls {:filetypes [:sql]} |
| 169 | + :jdtls {:filetypes [:java]} |
| 170 | + :rust_analyzer {:filetypes [:rust]} |
163 | 171 | :clangd {:autostart true |
164 | 172 | :capabilities {:offsetEncoding :utf-8} |
165 | 173 | :filetypes [:c :cpp :cuda]}}) |
166 | 174 |
|
167 | 175 | (local default_lsp_capabilities (cmp_nvim_lsp.default_capabilities)) |
168 | 176 |
|
| 177 | +(local enabled_servers []) |
| 178 | +(local ft_to_servers {}) |
| 179 | + |
169 | 180 | (let [installed ((. masonlsp :get_installed_servers))] |
170 | 181 | (each [_ server (ipairs installed)] |
171 | 182 | (let [opts (or (. lsp_opt server) {})] |
|
174 | 185 | default_lsp_capabilities |
175 | 186 | (or (. opts :capabilities) {}))) |
176 | 187 | (vim.lsp.config server opts) |
177 | | - (vim.lsp.enable server)))) |
| 188 | + (let [filetypes (or (. opts :filetypes) |
| 189 | + (. (. vim.lsp.config server) :filetypes) |
| 190 | + [])] |
| 191 | + (each [_ ft (ipairs filetypes)] |
| 192 | + (when (not (. ft_to_servers ft)) |
| 193 | + (tset ft_to_servers ft [])) |
| 194 | + (table.insert (. ft_to_servers ft) server)))))) |
| 195 | + |
| 196 | +(vim.api.nvim_create_autocmd :FileType |
| 197 | + {:group (vim.api.nvim_create_augroup :lsp-enable |
| 198 | + {:clear true}) |
| 199 | + :callback (fn [ev] |
| 200 | + (let [servers (or (. ft_to_servers |
| 201 | + (. ev :match)) |
| 202 | + [])] |
| 203 | + (each [_ server (ipairs servers)] |
| 204 | + (when (not (. enabled_servers |
| 205 | + server)) |
| 206 | + (vim.lsp.enable server) |
| 207 | + (tset enabled_servers |
| 208 | + server |
| 209 | + true)))))} ) |
0 commit comments