summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/clangrefactoring/refactoringengine.cpp16
-rw-r--r--src/plugins/clangrefactoring/refactoringengine.h4
-rw-r--r--src/plugins/cppeditor/cppeditorwidget.cpp32
-rw-r--r--src/plugins/cppeditor/cppeditorwidget.h3
-rw-r--r--src/plugins/cpptools/cppeditorwidgetinterface.h6
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp6
-rw-r--r--src/plugins/cpptools/cppmodelmanager.h3
-rw-r--r--src/plugins/cpptools/cpprefactoringengine.cpp22
-rw-r--r--src/plugins/cpptools/cpprefactoringengine.h4
-rw-r--r--src/plugins/cpptools/refactoringengineinterface.h4
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; }