diff --git a/src/libs/languageserverprotocol/servercapabilities.cpp b/src/libs/languageserverprotocol/servercapabilities.cpp index b728d359087..9d811d55fae 100644 --- a/src/libs/languageserverprotocol/servercapabilities.cpp +++ b/src/libs/languageserverprotocol/servercapabilities.cpp @@ -159,12 +159,6 @@ bool TextDocumentRegistrationOptions::filterApplies(const Utils::FileName &fileN }); } -bool ServerCapabilities::RegistrationOptions::isValid(QStringList *error) const -{ - return TextDocumentRegistrationOptions::isValid(error) - && StaticRegistrationOptions::isValid(error); -} - bool TextDocumentSyncOptions::isValid(QStringList *error) const { return checkOptional(error, openCloseKey) diff --git a/src/libs/languageserverprotocol/servercapabilities.h b/src/libs/languageserverprotocol/servercapabilities.h index ab1990ee3a8..c5dd6836b54 100644 --- a/src/libs/languageserverprotocol/servercapabilities.h +++ b/src/libs/languageserverprotocol/servercapabilities.h @@ -42,7 +42,7 @@ public: { return checkOptional(error, resolveProviderKey); } }; -class LANGUAGESERVERPROTOCOL_EXPORT TextDocumentRegistrationOptions : public virtual JsonObject +class LANGUAGESERVERPROTOCOL_EXPORT TextDocumentRegistrationOptions : public JsonObject { public: using JsonObject::JsonObject; @@ -198,7 +198,7 @@ public: using ColorProviderOptions = JsonObject; - class LANGUAGESERVERPROTOCOL_EXPORT StaticRegistrationOptions : public virtual JsonObject + class LANGUAGESERVERPROTOCOL_EXPORT StaticRegistrationOptions : public JsonObject { public: using JsonObject::JsonObject; @@ -245,12 +245,27 @@ public: { insert(definitionProviderKey, definitionProvider); } void clearDefinitionProvider() { remove(definitionProviderKey); } - class LANGUAGESERVERPROTOCOL_EXPORT RegistrationOptions - : public TextDocumentRegistrationOptions, public StaticRegistrationOptions + class LANGUAGESERVERPROTOCOL_EXPORT RegistrationOptions : public JsonObject { public: - using TextDocumentRegistrationOptions::TextDocumentRegistrationOptions; - bool isValid(QStringList *error) const override; + using JsonObject::JsonObject; + + LanguageClientArray documentSelector() const + { return clientArray(documentSelectorKey); } + void setDocumentSelector(const LanguageClientArray &documentSelector) + { insert(documentSelectorKey, documentSelector.toJson()); } + + bool filterApplies(const Utils::FileName &fileName, + const Utils::MimeType &mimeType = Utils::MimeType()) const; + + // The id used to register the request. The id can be used to deregister + // the request again. See also Registration#id. + Utils::optional id() const { return optionalValue(idKey); } + void setId(const QString &id) { insert(idKey, id); } + void clearId() { remove(idKey); } + + bool isValid(QStringList *error) const override + { return checkArray(error, documentSelectorKey) && checkOptional(error, idKey); } }; // The server provides Goto Type Definition support.