diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2017-09-25 10:51:39 +0200 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2017-10-25 13:35:48 +0000 |
commit | 81f5c1c8ec19bb58fc4cfb607e2c2f8ebf5cc6d8 (patch) | |
tree | 151894bc6af1cab7478de8bda1265870052d0a5e /src/plugins/cpptools/cpprefactoringengine.cpp | |
parent | 3bea2914276b3bd3578776e186977990da118c12 (diff) | |
download | qt-creator-81f5c1c8ec19bb58fc4cfb607e2c2f8ebf5cc6d8.tar.gz |
Clang: implement globalRename based on clang Index
Has the same limitations as findUsages.
Change-Id: I8de4df2ecbfd8a4f3073666994398dc43af0d73c
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
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, |