this repo has no description
1(import-macros {: use} :relude)
2
3(use nvim {: fun : cmd : opt : map :buf-map bmap})
4(use picker)
5(import-macros logger :nvim.logger)
6(import-macros {: augroup} :nvim)
7
8(let [lsp vim.lsp
9 border :rounded]
10 (set lsp.handlers.textDocument/hover (lsp.with lsp.handlers.hover {:border border}))
11 (set lsp.handlers.textDocument/signatureHelp (lsp.with lsp.handlers.signature_help {:border border}))
12 (vim.diagnostic.config {:float {:border border}}))
13
14(augroup hauleth-lsp
15 (on LspAttach
16 (let [bufnr args.buf
17 client (vim.lsp.get_client_by_id args.data.client_id)]
18 ((. (require :fidget) :setup) {})
19 (logger.inspect client)
20 (local capable?
21 (fn [capability]
22 (. client.server_capabilities capability)))
23 (when (capable? :declarationProvider)
24 (bmap :n :gD #(vim.lsp.buf.declaration)))
25 (when (capable? :documentFormattingProvider)
26 (bmap :n :Q #(vim.lsp.buf.format)))
27 )))
28
29(augroup hauleth-lsp-diagnostics
30 (on CursorHold "*" (vim.diagnostic.open_float {:focus false})))
31
32
33(fn setup [name opts]
34 (vim.lsp.enable name)
35 (vim.lsp.config name opts))
36
37(setup :rust_analyzer {
38 :root_markers [ "Cargo.lock" ".git" ".jj" ]
39 :filetypes [ "rust" ]
40 :cmd [vim.g.lsp_paths.rust_analyzer]
41 :settings {:rust-analyzer {:files {:excludeDirs [".direnv"]}}}})
42
43(setup :lexical {
44 :root_markers [ "mix.exs" ".git" ".jj" ]
45 :filetypes [ "elixir" "eelixir" "heex" ]
46 :cmd [vim.g.lsp_paths.lexical]})
47
48(setup :elp {
49 :root_markers [ "rebar.config" ]
50 :filetypes [ "erlang" ]
51 :cmd [vim.g.lsp_paths.elp "server"]
52 })
53
54; (setup :zls {})
55
56;(setup :nixd {
57; :autostart true
58; :cmd [vim.g.lsp_paths.nixd]
59; })
60
61(setup :typos_lsp {
62 :autostart true
63 :cmd [vim.g.lsp_paths.typos_lsp]})
64
65; (setup :taplo {
66; :filetypes [ "toml" ]
67; :cmd [vim.g.lsm_paths.taplo :lsp :stdio]})
68
69; (augroup lsp-direnv (on User :DirenvLoaded (cmd.LspStart)))