From 73e0002b6f211376bbf36c31a2f812aedf6bd6b0 Mon Sep 17 00:00:00 2001 From: glepnir Date: Wed, 18 Sep 2024 20:36:07 +0800 Subject: feat: show deprecate servers list in LspInfo (#3308) * feat: show deprecate servers list in LspInfo In order to smoothly transition to the vim.lsp.start interface in the future, adding checkhealth here is meaningless. Only the lspinfo information window is available. So shown deprecate servers list in LspInfo and update the server deprecate remove version to 0.2.1. 0.2.0 is tagged too quickly cause some servers not removed. Co-authored-by: Justin M. Keyes --- lua/lspconfig.lua | 67 ++++++++++++++++++++++++++------------------ lua/lspconfig/ui/lspinfo.lua | 8 +++++- 2 files changed, 47 insertions(+), 28 deletions(-) (limited to 'lua') diff --git a/lua/lspconfig.lua b/lua/lspconfig.lua index b9012f87..f5129bc6 100644 --- a/lua/lspconfig.lua +++ b/lua/lspconfig.lua @@ -4,44 +4,57 @@ local M = { util = require 'lspconfig.util', } +--- Deprecated config names. +--- ---@class Alias ---@field to string The new name of the server ---@field version string The version that the alias will be removed in ----@param name string ----@return Alias -local function server_alias(name) - local aliases = { - ['fennel-ls'] = { - to = 'fennel_ls', - version = '0.2.0', - }, - ruby_ls = { - to = 'ruby_lsp', - version = '0.2.0', - }, - ['starlark-rust'] = { - to = 'starlark_rust', - version = '0.2.0', - }, - sumneko_lua = { - to = 'lua_ls', - version = '0.2.0', - }, - tsserver = { - to = 'ts_ls', - version = '0.2.0', - }, - } +---@field inconfig? boolean need shown in lspinfo +local aliases = { + ['fennel-ls'] = { + to = 'fennel_ls', + version = '0.2.1', + }, + ruby_ls = { + to = 'ruby_lsp', + version = '0.2.1', + }, + ['starlark-rust'] = { + to = 'starlark_rust', + version = '0.2.1', + }, + sumneko_lua = { + to = 'lua_ls', + version = '0.2.1', + }, + tsserver = { + to = 'ts_ls', + version = '0.2.1', + }, +} - return aliases[name] +---@return Alias +---@param name string|nil get this alias, or nil to get all aliases that were used in the current session. +M.server_aliases = function(name) + if name then + return aliases[name] + end + local used_aliases = {} + for sname, alias in pairs(aliases) do + if alias.inconfig then + used_aliases[sname] = alias + end + end + return used_aliases end local mt = {} function mt:__index(k) if configs[k] == nil then - local alias = server_alias(k) + local alias = M.server_aliases(k) if alias then vim.deprecate(k, alias.to, alias.version, 'lspconfig', false) + alias.inconfig = true k = alias.to end diff --git a/lua/lspconfig/ui/lspinfo.lua b/lua/lspconfig/ui/lspinfo.lua index 886014aa..e0b9bf96 100644 --- a/lua/lspconfig/ui/lspinfo.lua +++ b/lua/lspconfig/ui/lspinfo.lua @@ -268,8 +268,14 @@ return function() '', 'Configured servers list: ' .. table.concat(util.available_servers(), ', '), } - + local deprecated_servers = {} vim.list_extend(buf_lines, matching_config_header) + for server_name, deprecate in pairs(require('lspconfig').server_aliases()) do + table.insert(deprecated_servers, ('%s -> %s'):format(server_name, deprecate.to)) + end + if #deprecated_servers > 0 then + vim.list_extend(buf_lines, { '', 'Deprecated servers: ' .. table.concat(deprecated_servers, ' ') }) + end local fmt_buf_lines = indent_lines(buf_lines, ' ') -- cgit v1.2.3-70-g09d2