aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/languageserverprotocol/servercapabilities.cpp21
-rw-r--r--src/libs/languageserverprotocol/servercapabilities.h6
2 files changed, 22 insertions, 5 deletions
diff --git a/src/libs/languageserverprotocol/servercapabilities.cpp b/src/libs/languageserverprotocol/servercapabilities.cpp
index 3d2721f4a6..1b2c0bd9cc 100644
--- a/src/libs/languageserverprotocol/servercapabilities.cpp
+++ b/src/libs/languageserverprotocol/servercapabilities.cpp
@@ -130,6 +130,25 @@ void ServerCapabilities::setRenameProvider(Utils::variant<ServerCapabilities::Re
insert(renameProviderKey, Utils::get<RenameOptions>(renameProvider));
}
+Utils::optional<Utils::variant<bool, JsonObject>> ServerCapabilities::colorProvider() const
+{
+ using RetType = Utils::variant<bool, JsonObject>;
+ const QJsonValue &localValue = value(colorProviderKey);
+ if (localValue.isBool())
+ return RetType(localValue.toBool());
+ if (localValue.isObject())
+ return RetType(JsonObject(localValue.toObject()));
+ return Utils::nullopt;
+}
+
+void ServerCapabilities::setColorProvider(Utils::variant<bool, JsonObject> colorProvider)
+{
+ if (Utils::holds_alternative<bool>(colorProvider))
+ insert(renameProviderKey, Utils::get<bool>(colorProvider));
+ else if (Utils::holds_alternative<JsonObject>(colorProvider))
+ insert(renameProviderKey, Utils::get<JsonObject>(colorProvider));
+}
+
bool ServerCapabilities::isValid(QStringList *error) const
{
return checkOptional<TextDocumentSyncOptions, int>(error, textDocumentSyncKey)
@@ -149,7 +168,7 @@ bool ServerCapabilities::isValid(QStringList *error) const
&& checkOptional<bool>(error, documentRangeFormattingProviderKey)
&& checkOptional<bool, RenameOptions>(error, renameProviderKey)
&& checkOptional<DocumentLinkOptions>(error, documentLinkProviderKey)
- && checkOptional<TextDocumentRegistrationOptions>(error, colorProviderKey)
+ && checkOptional<bool, JsonObject>(error, colorProviderKey)
&& checkOptional<ExecuteCommandOptions>(error, executeCommandProviderKey)
&& checkOptional<WorkspaceServerCapabilities>(error, workspaceKey);
}
diff --git a/src/libs/languageserverprotocol/servercapabilities.h b/src/libs/languageserverprotocol/servercapabilities.h
index 0cbc7facf8..4c8011378f 100644
--- a/src/libs/languageserverprotocol/servercapabilities.h
+++ b/src/libs/languageserverprotocol/servercapabilities.h
@@ -373,10 +373,8 @@ public:
void clearDocumentLinkProvider() { remove(documentLinkProviderKey); }
// The server provides color provider support.
- Utils::optional<TextDocumentRegistrationOptions> colorProvider() const
- { return optionalValue<TextDocumentRegistrationOptions>(colorProviderKey); }
- void setColorProvider(TextDocumentRegistrationOptions colorProvider)
- { insert(colorProviderKey, colorProvider); }
+ Utils::optional<Utils::variant<bool, JsonObject>> colorProvider() const;
+ void setColorProvider(Utils::variant<bool, JsonObject> colorProvider);
void clearColorProvider() { remove(colorProviderKey); }
// The server provides execute command support.