From 81f5c1c8ec19bb58fc4cfb607e2c2f8ebf5cc6d8 Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Mon, 25 Sep 2017 10:51:39 +0200 Subject: Clang: implement globalRename based on clang Index Has the same limitations as findUsages. Change-Id: I8de4df2ecbfd8a4f3073666994398dc43af0d73c Reviewed-by: Marco Bubke --- src/plugins/cpptools/cpprefactoringengine.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/plugins/cpptools/cpprefactoringengine.cpp') diff --git a/src/plugins/cpptools/cpprefactoringengine.cpp b/src/plugins/cpptools/cpprefactoringengine.cpp index ffa48edbd0..ba391ec279 100644 --- a/src/plugins/cpptools/cpprefactoringengine.cpp +++ b/src/plugins/cpptools/cpprefactoringengine.cpp @@ -50,11 +50,29 @@ void CppRefactoringEngine::startLocalRenaming(const CursorInEditor &data, data.cursor().document()->revision()); } -void CppRefactoringEngine::startGlobalRenaming(const CursorInEditor &data) +void CppRefactoringEngine::globalRename(const CursorInEditor &data, + UsagesCallback &&, + const QString &replacement) { + CppModelManager *modelManager = CppModelManager::instance(); + if (!modelManager) + return; + CppEditorWidgetInterface *editorWidget = data.editorWidget(); QTC_ASSERT(editorWidget, return;); - editorWidget->renameUsages(); + + SemanticInfo info = editorWidget->semanticInfo(); + info.snapshot = modelManager->snapshot(); + info.snapshot.insert(info.doc); + const QTextCursor &cursor = data.cursor(); + if (const CPlusPlus::Macro *macro = findCanonicalMacro(cursor, info.doc)) { + modelManager->renameMacroUsages(*macro, replacement); + } else { + CanonicalSymbol cs(info.doc, info.snapshot); + CPlusPlus::Symbol *canonicalSymbol = cs(cursor); + if (canonicalSymbol) + modelManager->renameUsages(canonicalSymbol, cs.context(), replacement); + } } void CppRefactoringEngine::findUsages(const CursorInEditor &data, -- cgit v1.2.1