TextEditor: move rename symbol action to text editor

Task-number: QTCREATORBUG-21578
Change-Id: I9a873dcd38bacb2287c45973b6be0091c3eb9480
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2020-05-06 07:30:33 +02:00
parent a9aa561234
commit 3559af69db
12 changed files with 33 additions and 30 deletions

View File

@@ -34,7 +34,6 @@ const char CPPEDITOR_ID[] = "CppEditor.C++Editor";
const char CPPEDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("OpenWith::Editors", "C++ Editor"); const char CPPEDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("OpenWith::Editors", "C++ Editor");
const char SWITCH_DECLARATION_DEFINITION[] = "CppEditor.SwitchDeclarationDefinition"; const char SWITCH_DECLARATION_DEFINITION[] = "CppEditor.SwitchDeclarationDefinition";
const char OPEN_DECLARATION_DEFINITION_IN_NEXT_SPLIT[] = "CppEditor.OpenDeclarationDefinitionInNextSplit"; const char OPEN_DECLARATION_DEFINITION_IN_NEXT_SPLIT[] = "CppEditor.OpenDeclarationDefinitionInNextSplit";
const char RENAME_SYMBOL_UNDER_CURSOR[] = "CppEditor.RenameSymbolUnderCursor";
const char OPEN_PREPROCESSOR_DIALOG[] = "CppEditor.OpenPreprocessorDialog"; const char OPEN_PREPROCESSOR_DIALOG[] = "CppEditor.OpenPreprocessorDialog";
const char ERRORS_IN_HEADER_FILES[] = "CppEditor.ErrorsInHeaderFiles"; const char ERRORS_IN_HEADER_FILES[] = "CppEditor.ErrorsInHeaderFiles";
const char MULTIPLE_PARSE_CONTEXTS_AVAILABLE[] = "CppEditor.MultipleParseContextsAvailable"; const char MULTIPLE_PARSE_CONTEXTS_AVAILABLE[] = "CppEditor.MultipleParseContextsAvailable";

View File

@@ -105,7 +105,8 @@ public:
setEditorActionHandlers(TextEditorActionHandler::Format setEditorActionHandlers(TextEditorActionHandler::Format
| TextEditorActionHandler::UnCommentSelection | TextEditorActionHandler::UnCommentSelection
| TextEditorActionHandler::UnCollapseAll | TextEditorActionHandler::UnCollapseAll
| TextEditorActionHandler::FollowSymbolUnderCursor); | TextEditorActionHandler::FollowSymbolUnderCursor
| TextEditorActionHandler::RenameSymbol);
} }
}; };
@@ -118,7 +119,6 @@ public:
void onAllTasksFinished(Core::Id type); void onAllTasksFinished(Core::Id type);
void inspectCppCodeModel(); void inspectCppCodeModel();
QAction *m_renameSymbolUnderCursorAction = nullptr;
QAction *m_reparseExternallyChangedFiles = nullptr; QAction *m_reparseExternallyChangedFiles = nullptr;
QAction *m_openTypeHierarchyAction = nullptr; QAction *m_openTypeHierarchyAction = nullptr;
QAction *m_openIncludeHierarchyAction = nullptr; QAction *m_openIncludeHierarchyAction = nullptr;
@@ -245,16 +245,7 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
Command *sep = contextMenu->addSeparator(); Command *sep = contextMenu->addSeparator();
sep->action()->setObjectName(QLatin1String(Constants::M_REFACTORING_MENU_INSERTION_POINT)); sep->action()->setObjectName(QLatin1String(Constants::M_REFACTORING_MENU_INSERTION_POINT));
contextMenu->addSeparator(); contextMenu->addSeparator();
cppToolsMenu->addAction(ActionManager::command(TextEditor::Constants::RENAME_SYMBOL));
d->m_renameSymbolUnderCursorAction = new QAction(tr("Rename Symbol Under Cursor"),
this);
cmd = ActionManager::registerAction(d->m_renameSymbolUnderCursorAction,
Constants::RENAME_SYMBOL_UNDER_CURSOR,
context);
cmd->setDefaultKeySequence(QKeySequence(tr("CTRL+SHIFT+R")));
connect(d->m_renameSymbolUnderCursorAction, &QAction::triggered,
this, &CppEditorPlugin::renameSymbolUnderCursor);
cppToolsMenu->addAction(cmd);
// Update context in global context // Update context in global context
cppToolsMenu->addSeparator(Core::Constants::G_DEFAULT_THREE); cppToolsMenu->addSeparator(Core::Constants::G_DEFAULT_THREE);
@@ -342,8 +333,8 @@ void CppEditorPlugin::showPreProcessorDialog()
void CppEditorPluginPrivate::onTaskStarted(Id type) void CppEditorPluginPrivate::onTaskStarted(Id type)
{ {
if (type == CppTools::Constants::TASK_INDEX) { if (type == CppTools::Constants::TASK_INDEX) {
m_renameSymbolUnderCursorAction->setEnabled(false);
ActionManager::command(TextEditor::Constants::FIND_USAGES)->action()->setEnabled(false); ActionManager::command(TextEditor::Constants::FIND_USAGES)->action()->setEnabled(false);
ActionManager::command(TextEditor::Constants::RENAME_SYMBOL)->action()->setEnabled(false);
m_reparseExternallyChangedFiles->setEnabled(false); m_reparseExternallyChangedFiles->setEnabled(false);
m_openTypeHierarchyAction->setEnabled(false); m_openTypeHierarchyAction->setEnabled(false);
m_openIncludeHierarchyAction->setEnabled(false); m_openIncludeHierarchyAction->setEnabled(false);
@@ -353,8 +344,8 @@ void CppEditorPluginPrivate::onTaskStarted(Id type)
void CppEditorPluginPrivate::onAllTasksFinished(Id type) void CppEditorPluginPrivate::onAllTasksFinished(Id type)
{ {
if (type == CppTools::Constants::TASK_INDEX) { if (type == CppTools::Constants::TASK_INDEX) {
m_renameSymbolUnderCursorAction->setEnabled(true);
ActionManager::command(TextEditor::Constants::FIND_USAGES)->action()->setEnabled(true); ActionManager::command(TextEditor::Constants::FIND_USAGES)->action()->setEnabled(true);
ActionManager::command(TextEditor::Constants::RENAME_SYMBOL)->action()->setEnabled(true);
m_reparseExternallyChangedFiles->setEnabled(true); m_reparseExternallyChangedFiles->setEnabled(true);
m_openTypeHierarchyAction->setEnabled(true); m_openTypeHierarchyAction->setEnabled(true);
m_openIncludeHierarchyAction->setEnabled(true); m_openIncludeHierarchyAction->setEnabled(true);

View File

@@ -860,7 +860,7 @@ protected:
QMenu *CppEditorWidget::createRefactorMenu(QWidget *parent) const QMenu *CppEditorWidget::createRefactorMenu(QWidget *parent) const
{ {
auto *menu = new QMenu(tr("&Refactor"), parent); auto *menu = new QMenu(tr("&Refactor"), parent);
menu->addAction(ActionManager::command(Constants::RENAME_SYMBOL_UNDER_CURSOR)->action()); menu->addAction(ActionManager::command(TextEditor::Constants::RENAME_SYMBOL)->action());
// ### enable // ### enable
// updateSemanticInfo(m_semanticHighlighter->semanticInfo(currentSource())); // updateSemanticInfo(m_semanticHighlighter->semanticInfo(currentSource()));

View File

@@ -81,7 +81,7 @@ public:
void findUsages(QTextCursor cursor); void findUsages(QTextCursor cursor);
void renameUsages(const QString &replacement = QString(), void renameUsages(const QString &replacement = QString(),
QTextCursor cursor = QTextCursor()); QTextCursor cursor = QTextCursor());
void renameSymbolUnderCursor(); void renameSymbolUnderCursor() override;
bool selectBlockUp() override; bool selectBlockUp() override;
bool selectBlockDown() override; bool selectBlockDown() override;

View File

@@ -844,7 +844,7 @@ void QmlJSEditorWidget::findUsages()
m_findReferences->findUsages(textDocument()->filePath().toString(), textCursor().position()); m_findReferences->findUsages(textDocument()->filePath().toString(), textCursor().position());
} }
void QmlJSEditorWidget::renameUsages() void QmlJSEditorWidget::renameSymbolUnderCursor()
{ {
m_findReferences->renameUsages(textDocument()->filePath().toString(), textCursor().position()); m_findReferences->renameUsages(textDocument()->filePath().toString(), textCursor().position());
} }
@@ -1100,7 +1100,8 @@ QmlJSEditorFactory::QmlJSEditorFactory(Core::Id _id)
setEditorActionHandlers(TextEditorActionHandler::Format setEditorActionHandlers(TextEditorActionHandler::Format
| TextEditorActionHandler::UnCommentSelection | TextEditorActionHandler::UnCommentSelection
| TextEditorActionHandler::UnCollapseAll | TextEditorActionHandler::UnCollapseAll
| TextEditorActionHandler::FollowSymbolUnderCursor); | TextEditorActionHandler::FollowSymbolUnderCursor
| TextEditorActionHandler::RenameSymbol);
} }
void QmlJSEditorFactory::decorateEditor(TextEditorWidget *editor) void QmlJSEditorFactory::decorateEditor(TextEditorWidget *editor)

View File

@@ -74,7 +74,7 @@ public:
void inspectElementUnderCursor() const; void inspectElementUnderCursor() const;
void findUsages() override; void findUsages() override;
void renameUsages(); void renameSymbolUnderCursor() override;
void showContextPane(); void showContextPane();
signals: signals:

View File

@@ -162,10 +162,7 @@ QmlJSEditorPluginPrivate::QmlJSEditorPluginPrivate()
contextMenu->addAction(cmd); contextMenu->addAction(cmd);
qmlToolsMenu->addAction(cmd); qmlToolsMenu->addAction(cmd);
QAction *renameUsagesAction = new QAction(QmlJSEditorPlugin::tr("Rename Symbol Under Cursor"), this); cmd = ActionManager::command(TextEditor::Constants::RENAME_SYMBOL);
cmd = ActionManager::registerAction(renameUsagesAction, "QmlJSEditor.RenameUsages", context);
cmd->setDefaultKeySequence(QKeySequence(QmlJSEditorPlugin::tr("Ctrl+Shift+R")));
connect(renameUsagesAction, &QAction::triggered, this, &QmlJSEditorPluginPrivate::renameUsages);
contextMenu->addAction(cmd); contextMenu->addAction(cmd);
qmlToolsMenu->addAction(cmd); qmlToolsMenu->addAction(cmd);
@@ -247,7 +244,7 @@ QuickToolBar *QmlJSEditorPlugin::quickToolBar()
void QmlJSEditorPluginPrivate::renameUsages() void QmlJSEditorPluginPrivate::renameUsages()
{ {
if (auto editor = qobject_cast<QmlJSEditorWidget*>(EditorManager::currentEditor()->widget())) if (auto editor = qobject_cast<QmlJSEditorWidget*>(EditorManager::currentEditor()->widget()))
editor->renameUsages(); editor->renameSymbolUnderCursor();
} }
void QmlJSEditorPluginPrivate::reformatFile() void QmlJSEditorPluginPrivate::reformatFile()

View File

@@ -1965,6 +1965,11 @@ void TextEditorWidget::findUsages()
emit requestUsages(textCursor()); emit requestUsages(textCursor());
} }
void TextEditorWidget::renameSymbolUnderCursor()
{
emit requestRename(textCursor());
}
void TextEditorWidget::abortAssist() void TextEditorWidget::abortAssist()
{ {
d->m_codeAssistant.destroyContext(); d->m_codeAssistant.destroyContext();

View File

@@ -453,6 +453,7 @@ public:
void openLinkUnderCursorInNextSplit(); void openLinkUnderCursorInNextSplit();
virtual void findUsages(); virtual void findUsages();
virtual void renameSymbolUnderCursor();
/// Abort code assistant if it is running. /// Abort code assistant if it is running.
void abortAssist(); void abortAssist();
@@ -490,6 +491,7 @@ signals:
void requestLinkAt(const QTextCursor &cursor, Utils::ProcessLinkCallback &callback, void requestLinkAt(const QTextCursor &cursor, Utils::ProcessLinkCallback &callback,
bool resolveTarget, bool inNextSplit); bool resolveTarget, bool inNextSplit);
void requestUsages(const QTextCursor &cursor); void requestUsages(const QTextCursor &cursor);
void requestRename(const QTextCursor &cursor);
protected: protected:
QTextBlock blockForVisibleRow(int row) const; QTextBlock blockForVisibleRow(int row) const;

View File

@@ -182,6 +182,7 @@ public:
QAction *m_followSymbolAction = nullptr; QAction *m_followSymbolAction = nullptr;
QAction *m_followSymbolInNextSplitAction = nullptr; QAction *m_followSymbolInNextSplitAction = nullptr;
QAction *m_findUsageAction = nullptr; QAction *m_findUsageAction = nullptr;
QAction *m_renameSymbolAction = nullptr;
QAction *m_jumpToFileAction = nullptr; QAction *m_jumpToFileAction = nullptr;
QAction *m_jumpToFileInNextSplitAction = nullptr; QAction *m_jumpToFileInNextSplitAction = nullptr;
QList<QAction *> m_modifyingActions; QList<QAction *> m_modifyingActions;
@@ -285,6 +286,9 @@ void TextEditorActionHandlerPrivate::createActions()
m_findUsageAction = registerAction(FIND_USAGES, m_findUsageAction = registerAction(FIND_USAGES,
[] (TextEditorWidget *w) { w->findUsages(); }, true, tr("Find References to Symbol Under Cursor"), [] (TextEditorWidget *w) { w->findUsages(); }, true, tr("Find References to Symbol Under Cursor"),
QKeySequence(tr("Ctrl+Shift+U"))); QKeySequence(tr("Ctrl+Shift+U")));
m_renameSymbolAction = registerAction(RENAME_SYMBOL,
[] (TextEditorWidget *w) { w->renameSymbolUnderCursor(); }, true, tr("Rename Symbol Under Cursor"),
QKeySequence(tr("Ctrl+Shift+R")));
m_jumpToFileAction = registerAction(JUMP_TO_FILE_UNDER_CURSOR, m_jumpToFileAction = registerAction(JUMP_TO_FILE_UNDER_CURSOR,
[] (TextEditorWidget *w) { w->openLinkUnderCursor(); }, true, tr("Jump to File Under Cursor"), [] (TextEditorWidget *w) { w->openLinkUnderCursor(); }, true, tr("Jump to File Under Cursor"),
QKeySequence(Qt::Key_F2)); QKeySequence(Qt::Key_F2));
@@ -519,6 +523,7 @@ void TextEditorActionHandlerPrivate::createActions()
m_jumpToFileAction->setEnabled(m_optionalActions & TextEditorActionHandler::JumpToFileUnderCursor); m_jumpToFileAction->setEnabled(m_optionalActions & TextEditorActionHandler::JumpToFileUnderCursor);
m_jumpToFileInNextSplitAction->setEnabled(m_optionalActions & TextEditorActionHandler::JumpToFileUnderCursor); m_jumpToFileInNextSplitAction->setEnabled(m_optionalActions & TextEditorActionHandler::JumpToFileUnderCursor);
m_unfoldAllAction->setEnabled(m_optionalActions & TextEditorActionHandler::UnCollapseAll); m_unfoldAllAction->setEnabled(m_optionalActions & TextEditorActionHandler::UnCollapseAll);
m_renameSymbolAction->setEnabled(m_optionalActions & TextEditorActionHandler::RenameSymbol);
} }
void TextEditorActionHandlerPrivate::updateActions() void TextEditorActionHandlerPrivate::updateActions()

View File

@@ -55,7 +55,8 @@ public:
UnCommentSelection = 2, UnCommentSelection = 2,
UnCollapseAll = 4, UnCollapseAll = 4,
FollowSymbolUnderCursor = 8, FollowSymbolUnderCursor = 8,
JumpToFileUnderCursor = 16 JumpToFileUnderCursor = 16,
RenameSymbol = 32,
}; };
using TextEditorWidgetResolver = std::function<TextEditorWidget *(Core::IEditor *)>; using TextEditorWidgetResolver = std::function<TextEditorWidget *(Core::IEditor *)>;

View File

@@ -201,6 +201,8 @@ const char UNINDENT[] = "TextEditor.Unindent";
const char FOLLOW_SYMBOL_UNDER_CURSOR[] = "TextEditor.FollowSymbolUnderCursor"; const char FOLLOW_SYMBOL_UNDER_CURSOR[] = "TextEditor.FollowSymbolUnderCursor";
const char FOLLOW_SYMBOL_UNDER_CURSOR_IN_NEXT_SPLIT[] = "TextEditor.FollowSymbolUnderCursorInNextSplit"; const char FOLLOW_SYMBOL_UNDER_CURSOR_IN_NEXT_SPLIT[] = "TextEditor.FollowSymbolUnderCursorInNextSplit";
const char FIND_USAGES[] = "TextEditor.FindUsages"; const char FIND_USAGES[] = "TextEditor.FindUsages";
// moved from CppEditor to TextEditor avoid breaking the setting by using the old key
const char RENAME_SYMBOL[] = "CppEditor.RenameSymbolUnderCursor";
const char JUMP_TO_FILE_UNDER_CURSOR[] = "TextEditor.JumpToFileUnderCursor"; const char JUMP_TO_FILE_UNDER_CURSOR[] = "TextEditor.JumpToFileUnderCursor";
const char JUMP_TO_FILE_UNDER_CURSOR_IN_NEXT_SPLIT[] = "TextEditor.JumpToFileUnderCursorInNextSplit"; const char JUMP_TO_FILE_UNDER_CURSOR_IN_NEXT_SPLIT[] = "TextEditor.JumpToFileUnderCursorInNextSplit";