@@ -288,12 +288,13 @@ struct ServerCapabilities
288288 bool referencesProvider = false ;
289289 bool documentSymbolProvider = false ;
290290 std::optional<DocumentLinkOptions> documentLinkProvider;
291+ bool renameProvider = false ;
291292 std::optional<DiagnosticOptions> diagnosticProvider;
292293 std::optional<WorkspaceCapabilities> workspace;
293294};
294295NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT (ServerCapabilities, textDocumentSync, completionProvider, hoverProvider, signatureHelpProvider,
295296 declarationProvider, definitionProvider, typeDefinitionProvider, implementationProvider, referencesProvider, documentSymbolProvider,
296- documentLinkProvider, diagnosticProvider, workspace);
297+ documentLinkProvider, renameProvider, diagnosticProvider, workspace);
297298
298299struct InitializeResult
299300{
@@ -832,6 +833,21 @@ struct DocumentSymbol
832833};
833834NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT (DocumentSymbol, name, detail, kind, tags, deprecated, range, selectionRange, children);
834835
836+ struct WorkspaceEdit
837+ {
838+ // TODO: this is optional and there are other options provided
839+ std::unordered_map<std::string /* DocumentUri */ , std::vector<TextEdit>> changes;
840+ };
841+ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT (WorkspaceEdit, changes);
842+
843+ struct RenameParams : TextDocumentPositionParams
844+ {
845+ std::string newName;
846+ };
847+ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT (RenameParams, textDocument, position, newName);
848+
849+ using RenameResult = std::optional<WorkspaceEdit>;
850+
835851struct WorkspaceFoldersChangeEvent
836852{
837853 std::vector<WorkspaceFolder> added;
@@ -845,13 +861,6 @@ struct DidChangeWorkspaceFoldersParams
845861};
846862NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT (DidChangeWorkspaceFoldersParams, event);
847863
848- struct WorkspaceEdit
849- {
850- // TODO: this is optional and there are other options provided
851- std::unordered_map<std::string /* DocumentUri */ , std::vector<TextEdit>> changes;
852- };
853- NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT (WorkspaceEdit, changes);
854-
855864struct ApplyWorkspaceEditParams
856865{
857866 std::optional<std::string> label;
0 commit comments