diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/clangrefactoring/refactoringengine.cpp | 16 | ||||
-rw-r--r-- | src/plugins/clangrefactoring/refactoringengine.h | 4 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditorwidget.cpp | 32 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditorwidget.h | 3 | ||||
-rw-r--r-- | src/plugins/cpptools/cppeditorwidgetinterface.h | 6 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 6 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.h | 3 | ||||
-rw-r--r-- | src/plugins/cpptools/cpprefactoringengine.cpp | 22 | ||||
-rw-r--r-- | src/plugins/cpptools/cpprefactoringengine.h | 4 | ||||
-rw-r--r-- | src/plugins/cpptools/refactoringengineinterface.h | 4 |
10 files changed, 52 insertions, 48 deletions
diff --git a/src/plugins/clangrefactoring/refactoringengine.cpp b/src/plugins/clangrefactoring/refactoringengine.cpp index edccda68f8..d519e53156 100644 --- a/src/plugins/clangrefactoring/refactoringengine.cpp +++ b/src/plugins/clangrefactoring/refactoringengine.cpp @@ -90,11 +90,6 @@ void RefactoringEngine::startLocalRenaming(const CppTools::CursorInEditor &data, m_server.requestSourceLocationsForRenamingMessage(std::move(message)); } -void RefactoringEngine::startGlobalRenaming(const CppTools::CursorInEditor &) -{ - // TODO: implement -} - CppTools::Usages RefactoringEngine::locationsAt(const CppTools::CursorInEditor &data) const { int line = 0, column = 0; @@ -114,13 +109,16 @@ CppTools::Usages RefactoringEngine::locationsAt(const CppTools::CursorInEditor & return result; } +void RefactoringEngine::globalRename(const CppTools::CursorInEditor &data, + CppTools::UsagesCallback &&renameUsagesCallback, + const QString &) +{ + renameUsagesCallback(locationsAt(data)); +} + void RefactoringEngine::findUsages(const CppTools::CursorInEditor &data, CppTools::UsagesCallback &&showUsagesCallback) const { - int line = 0, column = 0; - QTextCursor cursor = Utils::Text::wordStartCursor(data.cursor()); - Utils::Text::convertPosition(cursor.document(), cursor.position(), &line, &column); - showUsagesCallback(locationsAt(data)); } diff --git a/src/plugins/clangrefactoring/refactoringengine.h b/src/plugins/clangrefactoring/refactoringengine.h index 5dd1bacd38..8bda8b6173 100644 --- a/src/plugins/clangrefactoring/refactoringengine.h +++ b/src/plugins/clangrefactoring/refactoringengine.h @@ -50,7 +50,9 @@ public: void startLocalRenaming(const CppTools::CursorInEditor &data, CppTools::ProjectPart *projectPart, RenameCallback &&renameSymbolsCallback) override; - void startGlobalRenaming(const CppTools::CursorInEditor &data) override; + void globalRename(const CppTools::CursorInEditor &data, + CppTools::UsagesCallback &&renameUsagesCallback, + const QString &) override; void findUsages(const CppTools::CursorInEditor &data, CppTools::UsagesCallback &&showUsagesCallback) const override; diff --git a/src/plugins/cppeditor/cppeditorwidget.cpp b/src/plugins/cppeditor/cppeditorwidget.cpp index 9cadc40217..7b523b2421 100644 --- a/src/plugins/cppeditor/cppeditorwidget.cpp +++ b/src/plugins/cppeditor/cppeditorwidget.cpp @@ -377,7 +377,7 @@ static void findRenameCallback(QTextCursor cursor, { cursor = Utils::Text::wordStartCursor(cursor); cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); - QString text = cursor.selectedText(); + const QString text = cursor.selectedText(); SearchResultWindow::SearchMode mode = SearchResultWindow::SearchOnly; if (rename) mode = SearchResultWindow::SearchAndReplace; @@ -414,23 +414,15 @@ void CppEditorWidget::findUsages() }); } -void CppEditorWidget::renameUsagesInternal(const QString &replacement) +void CppEditorWidget::renameUsages(const QString &replacement) { - if (!d->m_modelManager) - return; - - SemanticInfo info = d->m_lastSemanticInfo; - info.snapshot = CppModelManager::instance()->snapshot(); - info.snapshot.insert(info.doc); - - if (const Macro *macro = CppTools::findCanonicalMacro(textCursor(), info.doc)) { - d->m_modelManager->renameMacroUsages(*macro, replacement); - } else { - CanonicalSymbol cs(info.doc, info.snapshot); - if (Symbol *canonicalSymbol = cs(textCursor())) - if (canonicalSymbol->identifier() != 0) - d->m_modelManager->renameUsages(canonicalSymbol, cs.context(), replacement); - } + refactoringEngine().globalRename(CppTools::CursorInEditor{textCursor(), + textDocument()->filePath(), + this}, + [this](const CppTools::Usages &usages) { + findRenameCallback(textCursor(), usages, true); + }, + replacement); } bool CppEditorWidget::selectBlockUp() @@ -598,10 +590,8 @@ void CppEditorWidget::renameSymbolUnderCursor() setExtraSelections(TextEditor::TextEditorWidget::CodeSemanticsSelection, selections); d->m_localRenaming.updateSelectionsForVariableUnderCursor(selections); } - if (!d->m_localRenaming.start()) { - refactoringEngine().startGlobalRenaming( - CppTools::CursorInEditor{textCursor(), textDocument()->filePath(), this}); - } + if (!d->m_localRenaming.start()) + cppEditorWidget->renameUsages(); } }; diff --git a/src/plugins/cppeditor/cppeditorwidget.h b/src/plugins/cppeditor/cppeditorwidget.h index fad200ef87..f8f9c39de3 100644 --- a/src/plugins/cppeditor/cppeditorwidget.h +++ b/src/plugins/cppeditor/cppeditorwidget.h @@ -79,6 +79,7 @@ public: void showPreProcessorWidget() override; void findUsages(); + void renameUsages(const QString &replacement = QString()); void renameSymbolUnderCursor(); bool selectBlockUp() override; @@ -105,8 +106,6 @@ protected: void slotCodeStyleSettingsChanged(const QVariant &) override; - void renameUsagesInternal(const QString &replacement) override; - private: void updateFunctionDeclDefLink(); void updateFunctionDeclDefLinkNow(); diff --git a/src/plugins/cpptools/cppeditorwidgetinterface.h b/src/plugins/cpptools/cppeditorwidgetinterface.h index ed8c7e0a46..26b8faa5d6 100644 --- a/src/plugins/cpptools/cppeditorwidgetinterface.h +++ b/src/plugins/cpptools/cppeditorwidgetinterface.h @@ -40,15 +40,9 @@ class SemanticInfo; class CPPTOOLS_EXPORT CppEditorWidgetInterface { public: - void renameUsages(const QString &replacement = QString()) - { - return renameUsagesInternal(replacement); - } - virtual void showPreProcessorWidget() = 0; virtual SemanticInfo semanticInfo() const = 0; virtual void updateSemanticInfo() = 0; - virtual void renameUsagesInternal(const QString &replacement) = 0; virtual void invokeTextEditorWidgetAssist(TextEditor::AssistKind assistKind, TextEditor::IAssistProvider *provider) = 0; diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index db5a4306e2..2074899572 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -294,12 +294,12 @@ void CppModelManager::startLocalRenaming(const CursorInEditor &data, engine->startLocalRenaming(data, projectPart, std::move(renameSymbolsCallback)); } -void CppModelManager::startGlobalRenaming(const CursorInEditor &data) +void CppModelManager::globalRename(const CursorInEditor &data, UsagesCallback &&renameCallback, + const QString &replacement) { RefactoringEngineInterface *engine = getRefactoringEngine(instance()->d->m_refactoringEngines); - engine->startGlobalRenaming(data); + engine->globalRename(data, std::move(renameCallback), replacement); } - void CppModelManager::findUsages(const CppTools::CursorInEditor &data, UsagesCallback &&showUsagesCallback) const { diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h index d2a51e2483..1cf660f83a 100644 --- a/src/plugins/cpptools/cppmodelmanager.h +++ b/src/plugins/cpptools/cppmodelmanager.h @@ -151,7 +151,8 @@ public: void startLocalRenaming(const CursorInEditor &data, CppTools::ProjectPart *projectPart, RenameCallback &&renameSymbolsCallback) final; - void startGlobalRenaming(const CursorInEditor &data) final; + void globalRename(const CursorInEditor &data, UsagesCallback &&renameCallback, + const QString &replacement) final; void findUsages(const CppTools::CursorInEditor &data, UsagesCallback &&showUsagesCallback) const final; 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, diff --git a/src/plugins/cpptools/cpprefactoringengine.h b/src/plugins/cpptools/cpprefactoringengine.h index cfaae23d16..44684821bf 100644 --- a/src/plugins/cpptools/cpprefactoringengine.h +++ b/src/plugins/cpptools/cpprefactoringengine.h @@ -35,8 +35,8 @@ public: void startLocalRenaming(const CursorInEditor &data, ProjectPart *projectPart, RenameCallback &&renameSymbolsCallback) override; - void startGlobalRenaming(const CursorInEditor &data) override; - + void globalRename(const CursorInEditor &data, UsagesCallback &&, + const QString &replacement) override; void findUsages(const CursorInEditor &data, UsagesCallback &&) const override; }; diff --git a/src/plugins/cpptools/refactoringengineinterface.h b/src/plugins/cpptools/refactoringengineinterface.h index 05cf8766b8..2bcb51afc3 100644 --- a/src/plugins/cpptools/refactoringengineinterface.h +++ b/src/plugins/cpptools/refactoringengineinterface.h @@ -60,7 +60,9 @@ public: virtual void startLocalRenaming(const CursorInEditor &data, CppTools::ProjectPart *projectPart, RenameCallback &&renameSymbolsCallback) = 0; - virtual void startGlobalRenaming(const CursorInEditor &data) = 0; + virtual void globalRename(const CursorInEditor &data, + UsagesCallback &&renameCallback, + const QString &replacement) = 0; virtual void findUsages(const CppTools::CursorInEditor &data, UsagesCallback &&showUsagesCallback) const = 0; virtual bool isRefactoringEngineAvailable() const { return true; } |