From cf18461c24f910594bd34c588b63a0849f3b3178 Mon Sep 17 00:00:00 2001 From: Solomon Laing Date: Mon, 13 Feb 2023 10:08:43 +1030 Subject: [PATCH] attempted fix for sumneko_lua -> lua_ls change, it didn't work --- .config/nvim/lua/lazyvim/init.lua | 10 +-- .config/nvim/lua/lazyvim/plugins/lsp/init.lua | 76 +++++++++++++------ 2 files changed, 57 insertions(+), 29 deletions(-) diff --git a/.config/nvim/lua/lazyvim/init.lua b/.config/nvim/lua/lazyvim/init.lua index 52eac2c..1c0d174 100644 --- a/.config/nvim/lua/lazyvim/init.lua +++ b/.config/nvim/lua/lazyvim/init.lua @@ -11,6 +11,11 @@ if not vim.loop.fs_stat(lazypath) then }) end +-- map leader and register keymap for Lazy. +vim.g.mapleader = " " +vim.g.maplocalleader = " " +vim.api.nvim_set_keymap("n", "L", ":Lazy", { desc = "Lazy GUI" }) + vim.opt.rtp:prepend(vim.env.LAZY or lazypath) if not vim.g.vscode then @@ -21,11 +26,6 @@ if not vim.g.vscode then }) end --- map leader and register keymap for Lazy. -vim.g.mapleader = " " -vim.g.maplocalleader = " " -vim.api.nvim_set_keymap("n", "L", ":Lazy", { desc = "Lazy GUI" }) - -- This might not be best, but it allows for easy resetting ColorMe = function() local colorscheme = "gruvbox-material" diff --git a/.config/nvim/lua/lazyvim/plugins/lsp/init.lua b/.config/nvim/lua/lazyvim/plugins/lsp/init.lua index bd89978..a3c96c1 100644 --- a/.config/nvim/lua/lazyvim/plugins/lsp/init.lua +++ b/.config/nvim/lua/lazyvim/plugins/lsp/init.lua @@ -12,9 +12,16 @@ return { }, ---@type lspconfig.options opts = { + -- options for vim.diagnostic.config() + diagnostics = { + underline = true, + update_in_insert = false, + virtual_text = { spacing = 4, prefix = "●" }, + severity_sort = true, + }, servers = { jsonls = {}, - sumneko_lua = { + lua_ls = { settings = { Lua = { workspace = { @@ -44,35 +51,56 @@ return { name = "DiagnosticSign" .. name vim.fn.sign_define(name, { text = icon, texthl = name, numhl = "" }) end - vim.diagnostic.config({ - underline = true, - update_in_insert = false, - virtual_text = { spacing = 4, prefix = "●" }, - severity_sort = true, - }) - ---@type lspconfig.options + vim.diagnostic.config(opts.diagnostics) + local servers = opts.servers local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) - require("mason-lspconfig").setup({ ensure_installed = vim.tbl_keys(servers) }) - require("mason-lspconfig").setup_handlers({ - function(server) - local server_opts = servers[server] or {} - server_opts.capabilities = capabilities - if opts.setup[server] then - if opts.setup[server](server, server_opts) then - return - end - elseif opts.setup["*"] then - if opts.setup["*"](server, server_opts) then - return - end + local function setup(server) + local server_opts = vim.tbl_deep_extend("force", { + capabilities = vim.deepcopy(capabilities), + }, servers[server] or {}) + + if opts.setup[server] then + if opts.setup[server](server, server_opts) then + return end - require("lspconfig")[server].setup(server_opts) - end, - }) + elseif opts.setup["*"] then + if opts.setup["*"](server, server_opts) then + return + end + end + require("lspconfig")[server].setup(server_opts) + end + + -- temp fix for lspconfig rename + -- https://github.com/neovim/nvim-lspconfig/pull/2439 + local mappings = require("mason-lspconfig.mappings.server") + if not mappings.lspconfig_to_package.lua_ls then + mappings.lspconfig_to_package.lua_ls = "lua-language-server" + mappings.package_to_lspconfig["lua-language-server"] = "lua_ls" + end + + local mlsp = require("mason-lspconfig") + local available = mlsp.get_available_servers() + + local ensure_installed = {} ---@type string[] + for server, server_opts in pairs(servers) do + if server_opts then + server_opts = server_opts == true and {} or server_opts + -- run manual setup if mason=false or if this is a server that cannot be installed with mason-lspconfig + if server_opts.mason == false or not vim.tbl_contains(available, server) then + setup(server) + else + ensure_installed[#ensure_installed + 1] = server + end + end + end + + require("mason-lspconfig").setup({ ensure_installed = ensure_installed }) + require("mason-lspconfig").setup_handlers({ setup }) end, },