LanguageClient: Expose server information

Server name and version are potentially interesting information.

Change-Id: I4fc9a2556d7fd8285fe0024cf0f83baf95112e65
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Kandeler
2021-04-28 09:25:25 +02:00
parent ec2449cae4
commit 248ebb494d
4 changed files with 30 additions and 0 deletions

View File

@@ -1347,6 +1347,17 @@ void Client::initializeCallback(const InitializeRequest::Response &initResponse)
log(QJsonDocument(result).toJson(QJsonDocument::Indented) + '\n'
+ tr("Initialize result is not valid"));
}
const Utils::optional<ServerInfo> serverInfo = result.serverInfo();
if (serverInfo) {
if (!serverInfo->isValid()) {
log(QJsonDocument(result).toJson(QJsonDocument::Indented) + '\n'
+ tr("Server Info is not valid"));
} else {
m_serverName = serverInfo->name();
if (const Utils::optional<QString> version = serverInfo->version())
m_serverVersion = version.value();
}
}
m_serverCapabilities = result.capabilities();
}

View File

@@ -116,6 +116,8 @@ public:
static LanguageServerProtocol::ClientCapabilities defaultClientCapabilities();
void setClientCapabilities(const LanguageServerProtocol::ClientCapabilities &caps);
const LanguageServerProtocol::ServerCapabilities &capabilities() const;
QString serverName() const { return m_serverName; }
QString serverVersion() const { return m_serverVersion; }
const DynamicCapabilities &dynamicCapabilities() const;
void registerCapabilities(const QList<LanguageServerProtocol::Registration> &registrations);
void unregisterCapabilities(const QList<LanguageServerProtocol::Unregistration> &unregistrations);
@@ -259,6 +261,8 @@ private:
ProgressManager m_progressManager;
bool m_activateDocAutomatically = false;
SemanticTokenSupport m_tokentSupport;
QString m_serverName;
QString m_serverVersion;
bool m_locatorsEnabled = true;
};