blob: 7bd3b231cd79a760e663cef2962b22975bbcc814 (
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
|
(import-macros {: ag!
: au!} :nvrc.macro.event)
(local lsp (require :lspconfig))
(local {: merge} (require :nvrc.utils))
(local colors (require :nvrc.colors))
(fn on_attach [client bufnr]
(if client.server_capabilities.document_highlight
(do
(vim.api.nvim_exec "augroup lsp_document_highlight
autocmd! * <buffer>
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
augroup END" false))))
(fn better_root_pattern [patterns except-patterns]
"match path if one of the given patterns is matched, EXCEPT if one of the except-patterns is matched"
(fn [path]
(when (not ((lsp.util.root_pattern except-patterns) path))
((lsp.util.root_pattern patterns) path))))
(local default_capabilities (vim.lsp.protocol.make_client_capabilities))
(fn init_lsp [lsp-name ?opts]
"initialize a language server with defaults"
(let [merged-opts (merge {: on_attach
:capabilities default_capabilities}
(or ?opts {}))]
((. lsp lsp-name :setup) merged-opts)))
(tset vim.lsp.handlers :textDocument/publishDiagnostics
(vim.lsp.with vim.lsp.diagnostic.on_publish_diagnostics
{:update_in_insert false
:virtual_text {:prefix "-"}
:signs false}))
;; Disable semantic hl globally, as it usually results in worse hl
(ag! global-no-semantic-hl
(au! LspAttach * (fn [args]
(local client (vim.lsp.get_client_by_id args.data.client_id))
(set client.server_capabilities.semanticTokensProvider nil))))
;; rust-analyzer is managed via rust-tools.nvim
(init_lsp :hls)
(init_lsp :gopls)
(init_lsp :pyright)
(init_lsp :clangd)
(init_lsp :ltex {:settings {:ltex {:language :en-GB}}})
|