diff options
Diffstat (limited to 'src/plugins/cpptools/cpprefactoringengine.cpp')
-rw-r--r-- | src/plugins/cpptools/cpprefactoringengine.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
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, |