forked from qt-creator/qt-creator
LSP: Add RenameOptions to the protocol implementation
Task-number: QTCREATORBUG-22691 Change-Id: I7eb13079a174cc6da8580e11e06cef09ebcc7b99 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -144,6 +144,7 @@ constexpr char optionsKey[] = "options";
|
|||||||
constexpr char parametersKey[] = "params";
|
constexpr char parametersKey[] = "params";
|
||||||
constexpr char patternKey[] = "pattern";
|
constexpr char patternKey[] = "pattern";
|
||||||
constexpr char positionKey[] = "position";
|
constexpr char positionKey[] = "position";
|
||||||
|
constexpr char prepareProviderKey[] = "prepareProvider";
|
||||||
constexpr char processIdKey[] = "processId";
|
constexpr char processIdKey[] = "processId";
|
||||||
constexpr char queryKey[] = "query";
|
constexpr char queryKey[] = "query";
|
||||||
constexpr char rangeFormattingKey[] = "rangeFormatting";
|
constexpr char rangeFormattingKey[] = "rangeFormatting";
|
||||||
|
@@ -111,6 +111,25 @@ Utils::optional<Utils::variant<bool, CodeActionOptions>> ServerCapabilities::cod
|
|||||||
return Utils::nullopt;
|
return Utils::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Utils::optional<Utils::variant<ServerCapabilities::RenameOptions, bool>> ServerCapabilities::renameProvider() const
|
||||||
|
{
|
||||||
|
using RetType = Utils::variant<ServerCapabilities::RenameOptions, bool>;
|
||||||
|
const QJsonValue &localValue = value(renameProviderKey);
|
||||||
|
if (localValue.isBool())
|
||||||
|
return RetType(localValue.toBool());
|
||||||
|
if (localValue.isObject())
|
||||||
|
return RetType(RenameOptions(localValue.toObject()));
|
||||||
|
return Utils::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServerCapabilities::setRenameProvider(Utils::variant<ServerCapabilities::RenameOptions, bool> renameProvider)
|
||||||
|
{
|
||||||
|
if (Utils::holds_alternative<bool>(renameProvider))
|
||||||
|
insert(renameProviderKey, Utils::get<bool>(renameProvider));
|
||||||
|
else if (Utils::holds_alternative<RenameOptions>(renameProvider))
|
||||||
|
insert(renameProviderKey, Utils::get<RenameOptions>(renameProvider));
|
||||||
|
}
|
||||||
|
|
||||||
bool ServerCapabilities::isValid(QStringList *error) const
|
bool ServerCapabilities::isValid(QStringList *error) const
|
||||||
{
|
{
|
||||||
return checkOptional<TextDocumentSyncOptions, int>(error, textDocumentSyncKey)
|
return checkOptional<TextDocumentSyncOptions, int>(error, textDocumentSyncKey)
|
||||||
@@ -128,7 +147,7 @@ bool ServerCapabilities::isValid(QStringList *error) const
|
|||||||
&& checkOptional<CodeLensOptions>(error, codeLensProviderKey)
|
&& checkOptional<CodeLensOptions>(error, codeLensProviderKey)
|
||||||
&& checkOptional<bool>(error, documentFormattingProviderKey)
|
&& checkOptional<bool>(error, documentFormattingProviderKey)
|
||||||
&& checkOptional<bool>(error, documentRangeFormattingProviderKey)
|
&& checkOptional<bool>(error, documentRangeFormattingProviderKey)
|
||||||
&& checkOptional<bool>(error, renameProviderKey)
|
&& checkOptional<bool, RenameOptions>(error, renameProviderKey)
|
||||||
&& checkOptional<DocumentLinkOptions>(error, documentLinkProviderKey)
|
&& checkOptional<DocumentLinkOptions>(error, documentLinkProviderKey)
|
||||||
&& checkOptional<TextDocumentRegistrationOptions>(error, colorProviderKey)
|
&& checkOptional<TextDocumentRegistrationOptions>(error, colorProviderKey)
|
||||||
&& checkOptional<ExecuteCommandOptions>(error, executeCommandProviderKey)
|
&& checkOptional<ExecuteCommandOptions>(error, executeCommandProviderKey)
|
||||||
|
@@ -346,9 +346,23 @@ public:
|
|||||||
{ insert(documentRangeFormattingProviderKey, documentRangeFormattingProvider); }
|
{ insert(documentRangeFormattingProviderKey, documentRangeFormattingProvider); }
|
||||||
void clearDocumentRangeFormattingProvider() { remove(documentRangeFormattingProviderKey); }
|
void clearDocumentRangeFormattingProvider() { remove(documentRangeFormattingProviderKey); }
|
||||||
|
|
||||||
|
class RenameOptions : public JsonObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using JsonObject::JsonObject;
|
||||||
|
|
||||||
|
// Renames should be checked and tested before being executed.
|
||||||
|
Utils::optional<bool> prepareProvider() const { return optionalValue<bool>(prepareProviderKey); }
|
||||||
|
void setPrepareProvider(bool prepareProvider) { insert(prepareProviderKey, prepareProvider); }
|
||||||
|
void clearPrepareProvider() { remove(prepareProviderKey); }
|
||||||
|
|
||||||
|
bool isValid(QStringList * error) const override
|
||||||
|
{ return checkOptional<bool>(error, prepareProviderKey); }
|
||||||
|
};
|
||||||
|
|
||||||
// The server provides rename support.
|
// The server provides rename support.
|
||||||
Utils::optional<bool> renameProvider() const { return optionalValue<bool>(renameProviderKey); }
|
Utils::optional<Utils::variant<RenameOptions, bool>> renameProvider() const;
|
||||||
void setRenameProvider(bool renameProvider) { insert(renameProviderKey, renameProvider); }
|
void setRenameProvider(Utils::variant<RenameOptions,bool> renameProvider);
|
||||||
void clearRenameProvider() { remove(renameProviderKey); }
|
void clearRenameProvider() { remove(renameProviderKey); }
|
||||||
|
|
||||||
// The server provides document link support.
|
// The server provides document link support.
|
||||||
|
Reference in New Issue
Block a user