From 8924f965d13120745a8a86ab7166d64761c21fb9 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 2 Jan 2023 17:40:13 +0100 Subject: [PATCH] refactor(lsp): make servers easily configurable in overriding specs --- lua/lazyvim/plugins/lsp/init.lua | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/lua/lazyvim/plugins/lsp/init.lua b/lua/lazyvim/plugins/lsp/init.lua index 48ad27b9..39ca2f14 100644 --- a/lua/lazyvim/plugins/lsp/init.lua +++ b/lua/lazyvim/plugins/lsp/init.lua @@ -1,10 +1,3 @@ -local servers = require("lazyvim.plugins.lsp.servers") - -local function on_attach(client, bufnr) - require("lazyvim.plugins.lsp.format").on_attach(client, bufnr) - require("lazyvim.plugins.lsp.keymaps").on_attach(client, bufnr) -end - return { -- lspconfig { @@ -13,16 +6,19 @@ return { dependencies = { { "folke/neoconf.nvim", cmd = "Neoconf", config = true }, { "folke/neodev.nvim", config = true }, - { - "williamboman/mason.nvim", - config = true, - cmd = "Mason", - keys = { { "cm", "Mason", desc = "Mason" } }, - }, + "mason.nvim", { "williamboman/mason-lspconfig.nvim", config = { automatic_installation = true } }, "hrsh7th/cmp-nvim-lsp", }, - config = function() + ---@type lspconfig.options + servers = nil, + config = function(plugin) + -- setup formatting and keymaps + require("lazyvim.util").on_attach(function(client, buffer) + require("lazyvim.plugins.lsp.format").on_attach(client, buffer) + require("lazyvim.plugins.lsp.keymaps").on_attach(client, buffer) + end) + -- diagnostics for name, icon in pairs(require("lazyvim.config.icons").diagnostics) do name = "DiagnosticSign" .. name @@ -37,9 +33,11 @@ return { -- lspconfig local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) + + ---@type lspconfig.options + local servers = plugin.servers or require("lazyvim.plugins.lsp.servers") for server, opts in pairs(servers) do opts.capabilities = capabilities - opts.on_attach = on_attach require("lspconfig")[server].setup(opts) end end, @@ -49,10 +47,10 @@ return { { "jose-elias-alvarez/null-ls.nvim", event = "BufReadPre", + dependencies = { "mason.nvim" }, config = function() local nls = require("null-ls") nls.setup({ - on_attach = on_attach, sources = { -- nls.builtins.formatting.prettierd, nls.builtins.formatting.stylua,