mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
feat(lsp): show server version in :checkhealth #31611
Problem: Language server version information missing from `:checkhealth vim.lsp`. Solution: Store `InitializeResult.serverInfo.version` from the `initialize` response and display for each client in `:checkhealth vim.lsp`.
This commit is contained in:
@@ -174,6 +174,10 @@ local validate = vim.validate
|
||||
--- capabilities.
|
||||
--- @field server_capabilities lsp.ServerCapabilities?
|
||||
---
|
||||
--- Response from the server sent on `initialize` describing information about
|
||||
--- the server.
|
||||
--- @field server_info lsp.ServerInfo?
|
||||
---
|
||||
--- A ring buffer (|vim.ringbuf()|) containing progress messages
|
||||
--- sent by the server.
|
||||
--- @field progress vim.lsp.Client.Progress
|
||||
@@ -556,6 +560,8 @@ function Client:initialize()
|
||||
self.offset_encoding = self.server_capabilities.positionEncoding
|
||||
end
|
||||
|
||||
self.server_info = result.serverInfo
|
||||
|
||||
if next(self.settings) then
|
||||
self:notify(ms.workspace_didChangeConfiguration, { settings = self.settings })
|
||||
end
|
||||
|
||||
@@ -40,6 +40,8 @@ local function check_active_clients()
|
||||
local clients = vim.lsp.get_clients()
|
||||
if next(clients) then
|
||||
for _, client in pairs(clients) do
|
||||
local server_version = vim.tbl_get(client, 'server_info', 'version')
|
||||
or '? (no serverInfo.version response)'
|
||||
local cmd ---@type string
|
||||
local ccmd = client.config.cmd
|
||||
if type(ccmd) == 'table' then
|
||||
@@ -62,6 +64,7 @@ local function check_active_clients()
|
||||
end
|
||||
report_info(table.concat({
|
||||
string.format('%s (id: %d)', client.name, client.id),
|
||||
string.format('- Version: %s', server_version),
|
||||
dirs_info,
|
||||
string.format('- Command: %s', cmd),
|
||||
string.format('- Settings: %s', vim.inspect(client.settings, { newline = '\n ' })),
|
||||
|
||||
Reference in New Issue
Block a user