diff options
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/languageserverprotocol/servercapabilities.cpp | 21 | ||||
-rw-r--r-- | src/libs/languageserverprotocol/servercapabilities.h | 6 |
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. |