From 8dde6a3f09acaca95fd08fb2d324484fdae6717e Mon Sep 17 00:00:00 2001 From: Matt Leong Date: Fri, 29 Oct 2021 13:02:18 -0700 Subject: [PATCH] feat(config): add ability to add custom lsp server options --- lua/cosmic/config/config.lua | 10 +++++++++- lua/cosmic/lsp/providers/init.lua | 12 +++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lua/cosmic/config/config.lua b/lua/cosmic/config/config.lua index 00bb2a2..4457f23 100644 --- a/lua/cosmic/config/config.lua +++ b/lua/cosmic/config/config.lua @@ -35,12 +35,20 @@ config.lsp = { -- enable/disable server + formatting eslint = false, - -- enable non-default servers (todo: support for custom server configs) + -- enable non-default servers, use default lsp config + -- check here for configs that will be used: https://github.com/williamboman/nvim-lsp-installer/tree/main/lua/nvim-lsp-installer/servers rust_analyzer = true, tsserver = { -- disable formatting format = false, + -- OR add/override server options + opts = { + on_attach = function(client, bufnr) end, + flags = { + debounce_text_changes = 150, + } + } }, efm = { diff --git a/lua/cosmic/lsp/providers/init.lua b/lua/cosmic/lsp/providers/init.lua index 6dfd92c..68f288b 100644 --- a/lua/cosmic/lsp/providers/init.lua +++ b/lua/cosmic/lsp/providers/init.lua @@ -51,17 +51,16 @@ for _, requested_server in pairs(requested_servers) do end end --- print(vim.inspect(requested_servers)) --- print(vim.inspect(disabled_servers)) - lsp_installer.on_server_ready(function(server) local opts = default_config + -- disable server if config disabled server list says so opts.autostart = true if vim.tbl_contains(disabled_servers, server.name) then opts.autostart = false end + -- set up default cosmic options if server.name == 'tsserver' then opts = vim.tbl_deep_extend('force', opts, require('cosmic.lsp.providers.tsserver')) elseif server.name == 'efm' then @@ -72,6 +71,13 @@ lsp_installer.on_server_ready(function(server) opts = vim.tbl_deep_extend('force', opts, require('cosmic.lsp.providers.eslint')) end + -- override options if user definds them + if config.lsp.servers[server.name] then + if config.lsp.servers[server.name].opts ~= nil then + opts = config.lsp.servers[server.name].opts + end + end + -- This setup() function is exactly the same as lspconfig's setup function (:help lspconfig-quickstart) server:setup(opts) vim.cmd([[ do User LspAttachBuffers ]])