forked from qt-creator/qt-creator
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:
@@ -136,6 +136,17 @@ public:
|
|||||||
bool parametersAreValid(QString * /*errorMessage*/) const final { return true; }
|
bool parametersAreValid(QString * /*errorMessage*/) const final { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class LANGUAGESERVERPROTOCOL_EXPORT ServerInfo : public JsonObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using JsonObject::JsonObject;
|
||||||
|
|
||||||
|
QString name() const { return typedValue<QString>(nameKey); }
|
||||||
|
Utils::optional<QString> version() const { return optionalValue<QString>(versionKey); }
|
||||||
|
|
||||||
|
bool isValid() const override { return contains(nameKey); }
|
||||||
|
};
|
||||||
|
|
||||||
class LANGUAGESERVERPROTOCOL_EXPORT InitializeResult : public JsonObject
|
class LANGUAGESERVERPROTOCOL_EXPORT InitializeResult : public JsonObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -146,6 +157,9 @@ public:
|
|||||||
void setCapabilities(const ServerCapabilities &capabilities)
|
void setCapabilities(const ServerCapabilities &capabilities)
|
||||||
{ insert(capabilitiesKey, capabilities); }
|
{ insert(capabilitiesKey, capabilities); }
|
||||||
|
|
||||||
|
Utils::optional<ServerInfo> serverInfo() const
|
||||||
|
{ return optionalValue<ServerInfo>(serverInfoKey); }
|
||||||
|
|
||||||
bool isValid() const override { return contains(capabilitiesKey); }
|
bool isValid() const override { return contains(capabilitiesKey); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -190,6 +190,7 @@ constexpr char semanticHighlightingCapabilitiesKey[] = "semanticHighlightingCapa
|
|||||||
constexpr char semanticHighlightingKey[] = "semanticHighlighting";
|
constexpr char semanticHighlightingKey[] = "semanticHighlighting";
|
||||||
constexpr char semanticTokensKey[] = "semanticTokens";
|
constexpr char semanticTokensKey[] = "semanticTokens";
|
||||||
constexpr char semanticTokensProviderKey[] = "semanticTokensProvider";
|
constexpr char semanticTokensProviderKey[] = "semanticTokensProvider";
|
||||||
|
constexpr char serverInfoKey[] = "serverInfo";
|
||||||
constexpr char settingsKey[] = "settings";
|
constexpr char settingsKey[] = "settings";
|
||||||
constexpr char severityKey[] = "severity";
|
constexpr char severityKey[] = "severity";
|
||||||
constexpr char signatureHelpKey[] = "signatureHelp";
|
constexpr char signatureHelpKey[] = "signatureHelp";
|
||||||
|
|||||||
@@ -1347,6 +1347,17 @@ void Client::initializeCallback(const InitializeRequest::Response &initResponse)
|
|||||||
log(QJsonDocument(result).toJson(QJsonDocument::Indented) + '\n'
|
log(QJsonDocument(result).toJson(QJsonDocument::Indented) + '\n'
|
||||||
+ tr("Initialize result is not valid"));
|
+ 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();
|
m_serverCapabilities = result.capabilities();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,6 +116,8 @@ public:
|
|||||||
static LanguageServerProtocol::ClientCapabilities defaultClientCapabilities();
|
static LanguageServerProtocol::ClientCapabilities defaultClientCapabilities();
|
||||||
void setClientCapabilities(const LanguageServerProtocol::ClientCapabilities &caps);
|
void setClientCapabilities(const LanguageServerProtocol::ClientCapabilities &caps);
|
||||||
const LanguageServerProtocol::ServerCapabilities &capabilities() const;
|
const LanguageServerProtocol::ServerCapabilities &capabilities() const;
|
||||||
|
QString serverName() const { return m_serverName; }
|
||||||
|
QString serverVersion() const { return m_serverVersion; }
|
||||||
const DynamicCapabilities &dynamicCapabilities() const;
|
const DynamicCapabilities &dynamicCapabilities() const;
|
||||||
void registerCapabilities(const QList<LanguageServerProtocol::Registration> ®istrations);
|
void registerCapabilities(const QList<LanguageServerProtocol::Registration> ®istrations);
|
||||||
void unregisterCapabilities(const QList<LanguageServerProtocol::Unregistration> &unregistrations);
|
void unregisterCapabilities(const QList<LanguageServerProtocol::Unregistration> &unregistrations);
|
||||||
@@ -259,6 +261,8 @@ private:
|
|||||||
ProgressManager m_progressManager;
|
ProgressManager m_progressManager;
|
||||||
bool m_activateDocAutomatically = false;
|
bool m_activateDocAutomatically = false;
|
||||||
SemanticTokenSupport m_tokentSupport;
|
SemanticTokenSupport m_tokentSupport;
|
||||||
|
QString m_serverName;
|
||||||
|
QString m_serverVersion;
|
||||||
bool m_locatorsEnabled = true;
|
bool m_locatorsEnabled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user