diff --git a/src/plugins/languageclient/languageclientsymbolsupport.cpp b/src/plugins/languageclient/languageclientsymbolsupport.cpp index 546ad068e4b..822d910ecf3 100644 --- a/src/plugins/languageclient/languageclientsymbolsupport.cpp +++ b/src/plugins/languageclient/languageclientsymbolsupport.cpp @@ -452,21 +452,24 @@ void SymbolSupport::requestPrepareRename(TextEditor::TextDocument *document, void SymbolSupport::requestRename(const TextDocumentPositionParams &positionParams, Core::SearchResult *search) { + if (m_renameRequestIds[search].isValid()) + m_client->cancelRequest(m_renameRequestIds[search]); RenameParams params(positionParams); params.setNewName(search->textToReplace()); RenameRequest request(params); request.setResponseCallback([this, search](const RenameRequest::Response &response) { handleRenameResponse(search, response); }); + m_renameRequestIds[search] = request.id(); m_client->sendMessage(request); if (search->isInteractive()) search->popup(); } Utils::SearchResultItems generateReplaceItems(const WorkspaceEdit &edits, - Core::SearchResult *search, - bool limitToProjects, - const DocumentUri::PathMapper &pathMapper) + Core::SearchResult *search, + bool limitToProjects, + const DocumentUri::PathMapper &pathMapper) { auto convertEdits = [](const QList &edits) { return Utils::transform(edits, [](const TextEdit &edit) { @@ -546,6 +549,7 @@ void SymbolSupport::startRenameSymbol(const TextDocumentPositionParams &position void SymbolSupport::handleRenameResponse(Core::SearchResult *search, const RenameRequest::Response &response) { + m_renameRequestIds.remove(search); const std::optional &error = response.error(); QString errorMessage; if (error.has_value()) { diff --git a/src/plugins/languageclient/languageclientsymbolsupport.h b/src/plugins/languageclient/languageclientsymbolsupport.h index 3dcc7b0ddc3..a46ac4273a3 100644 --- a/src/plugins/languageclient/languageclientsymbolsupport.h +++ b/src/plugins/languageclient/languageclientsymbolsupport.h @@ -78,6 +78,7 @@ private: Client *m_client = nullptr; SymbolMapper m_defaultSymbolMapper; + QHash m_renameRequestIds; bool m_limitRenamingToProjects = false; };