From e3ef0791e7462c95c77ec9014d92ec97484789c8 Mon Sep 17 00:00:00 2001 From: Gustaf Rydholm Date: Thu, 5 Jan 2023 02:52:05 +0100 Subject: Refactor lsp --- fnl/config/lsp/lspconfig.fnl | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 fnl/config/lsp/lspconfig.fnl (limited to 'fnl/config/lsp/lspconfig.fnl') diff --git a/fnl/config/lsp/lspconfig.fnl b/fnl/config/lsp/lspconfig.fnl new file mode 100644 index 0000000..c9baba7 --- /dev/null +++ b/fnl/config/lsp/lspconfig.fnl @@ -0,0 +1,40 @@ +;; Setup of lsps. +(module config.lsp.lspconfig {autoload {util config.util lsp config.lsp.keymaps}}) + +(defn on-attach [client bufnr] (if (= client.name :html) + (set client.server_capabilities.document_formatting + false)) + (lsp.keymaps bufnr)) + +(defn capabilities [] + (let [capabilities (vim.lsp.protocol.make_client_capabilities)] + (set capabilities.textDocument.completion.completionItem.snippetSupport + true) + (let [cmp-nvim-lsp (util.prequire :cmp_nvim_lsp)] + (cmp-nvim-lsp.default_capabilities capabilities)))) + +(defn- handler-opts [] {:on_attach on-attach :capabilities (capabilities)}) + +(defn- jsonls-opts [] + (let [jsonls-opts (require :config.lsp.settings.jsonls)] + (vim.tbl_deep_extend :force jsonls-opts (handler-opts)))) + +(defn- sumneko-lua-opts [] + (let [sumneko-lua (require :config.lsp.settings.sumneko-lua)] + (vim.tbl_deep_extend :force sumneko-lua.opts (handler-opts)))) + +(defn- rust-opts [] + (let [rust (require :config.lsp.settings.rust)] + (vim.tbl_deep_extend :force rust.opts (handler-opts)))) + +(defn- get-server-opts [server] + (match server + :jsonls (jsonls-opts) + :sumneko_lua (sumneko-lua-opts) + :rust_analyzer (rust-opts) + _ (handler-opts))) + +(let [lspconfig (util.prequire :lspconfig) servers (require :config.lsp.servers)] + (each [_ server (ipairs servers)] + (let [server-config (. lspconfig server)] + (server-config.setup (get-server-opts server))))) -- cgit v1.2.3-70-g09d2