1
0
Fork 0
dotfiles/config/nvim/plugins/lsp.fnl

69 lines
3.4 KiB
Text
Raw Normal View History

2022-04-05 19:57:44 +00:00
(let [lsp (require :lspconfig)
illuminate (require :illuminate)
cmp (require :cmp_nvim_lsp)
2022-05-01 19:52:10 +00:00
nifoc-lsp (require :nifoc.lsp)
diagnostic (require :nifoc.diagnostic)
formatting (require :nifoc.formatting)]
2022-04-05 19:57:44 +00:00
(fn custom-attach [client bufnr]
(when client.server_capabilities.documentHighlightProvider
2022-04-05 19:57:44 +00:00
(illuminate.on_attach client bufnr))
2022-05-01 19:52:10 +00:00
(nifoc-lsp.on-attach client bufnr)
2022-04-05 19:57:44 +00:00
(diagnostic.maybe-enable-lsp client bufnr)
(formatting.maybe-enable-lsp client bufnr))
2022-04-05 19:57:44 +00:00
(fn custom-attach-no-format [client bufnr]
(set client.server_capabilities.documentFormattingProvider false)
2022-04-18 21:08:19 +00:00
(set client.server_capabilities.documentRangeFormattingProvider false)
2022-04-05 19:57:44 +00:00
(custom-attach client bufnr))
;; Custom handler
(tset vim.lsp.handlers :textDocument/hover
(vim.lsp.with vim.lsp.handlers.hover {:border :rounded}))
(tset vim.lsp.handlers :textDocument/signatureHelp
(vim.lsp.with vim.lsp.handlers.signature_help {:border :rounded}))
2022-04-05 19:57:44 +00:00
;; Servers
(let [default-capabilities (vim.lsp.protocol.make_client_capabilities)
2022-05-01 19:52:10 +00:00
capabilities (cmp.update_capabilities default-capabilities)
2022-04-05 19:57:44 +00:00
flags {:allow_incremental_sync true :debounce_text_changes 700}
default-config {:on_attach custom-attach : capabilities : flags}
default-config-no-format {:on_attach custom-attach-no-format
: capabilities
: flags}
2022-04-05 19:57:44 +00:00
default-servers [:bashls
:cssls
:dockerls
:erlangls
:eslint
:html
:rnix
:sqls
:taplo
:yamlls]]
;; Default
(each [_ name (pairs default-servers)]
((. lsp name :setup) default-config))
;; Custom
(lsp.elixirls.setup (->> {:cmd [:elixir-ls]}
(vim.tbl_extend :force default-config)))
2022-04-05 19:57:44 +00:00
(lsp.tsserver.setup (->> {:cmd [:typescript-language-server
:--stdio
:--tsserver-path
:tsserver]}
(vim.tbl_extend :force default-config-no-format)))
2022-04-05 19:57:44 +00:00
(lsp.jsonls.setup (->> {:cmd [:vscode-json-language-server :--stdio]}
(vim.tbl_extend :force default-config)))
(lsp.solargraph.setup (->> {:settings {:solargraph {:diagnostics true}}}
(vim.tbl_extend :force default-config)))
(lsp.sumneko_lua.setup (->> {:cmd [:lua-language-server]
:root_dir (or (lsp.util.root_pattern :init.vim
:init.lua
:.git)
(vim.loop.os_homedir))
:settings {:Lua {:runtime {:version :LuaJIT
:path (vim.split package.path
";")}
:diagnostics {:globals [:vim]}
:telemetry {:enable false}}}}
(vim.tbl_extend :force default-config)))))
2022-04-22 12:19:36 +00:00