diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 573ce3774bd..1f103bdcd53 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -1488,6 +1488,9 @@ void EditorManagerPrivate::setCurrentEditor(IEditor *editor, bool ignoreNavigati if (d->m_currentEditor == editor) return; + + emit m_instance->currentEditorAboutToChange(d->m_currentEditor); + if (d->m_currentEditor && !ignoreNavigationHistory) EditorManager::addCurrentPositionToNavigationHistory(); diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h index cbefff451f8..308e7607913 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.h +++ b/src/plugins/coreplugin/editormanager/editormanager.h @@ -189,6 +189,7 @@ signals: void findOnFileSystemRequest(const QString &path); void aboutToSave(IDocument *document); void autoSaved(); + void currentEditorAboutToChange(Core::IEditor *editor); public slots: static void saveDocument(); diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 3b60bfad401..118cbc18b47 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -8680,6 +8680,11 @@ void FakeVimHandler::handleInput(const QString &keys) d->leaveFakeVim(); } +void FakeVimHandler::enterCommandMode() +{ + d->enterCommandMode(); +} + void FakeVimHandler::setCurrentFileName(const QString &fileName) { d->m_currentFileName = fileName; diff --git a/src/plugins/fakevim/fakevimhandler.h b/src/plugins/fakevim/fakevimhandler.h index 6f218421e0d..92b9249735e 100644 --- a/src/plugins/fakevim/fakevimhandler.h +++ b/src/plugins/fakevim/fakevimhandler.h @@ -106,6 +106,7 @@ public: void handleCommand(const QString &cmd); void handleReplay(const QString &keys); void handleInput(const QString &keys); + void enterCommandMode(); void installEventFilter(); diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index b049aa2d965..847d3ca0c29 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -1035,6 +1035,7 @@ private: void onCoreAboutToClose(); void editorOpened(Core::IEditor *); void editorAboutToClose(Core::IEditor *); + void currentEditorAboutToChange(Core::IEditor *); void allDocumentsRenamed(const QString &oldName, const QString &newName); void documentRenamed(Core::IDocument *document, const QString &oldName, const QString &newName); @@ -1246,6 +1247,8 @@ bool FakeVimPluginPrivate::initialize() this, &FakeVimPluginPrivate::editorAboutToClose); connect(EditorManager::instance(), &EditorManager::editorOpened, this, &FakeVimPluginPrivate::editorOpened); + connect(EditorManager::instance(), &EditorManager::currentEditorAboutToChange, + this, &FakeVimPluginPrivate::currentEditorAboutToChange); connect(DocumentManager::instance(), &DocumentManager::allDocumentsRenamed, this, &FakeVimPluginPrivate::allDocumentsRenamed); @@ -1841,6 +1844,12 @@ void FakeVimPluginPrivate::editorAboutToClose(IEditor *editor) m_editorToHandler.remove(editor); } +void FakeVimPluginPrivate::currentEditorAboutToChange(IEditor *editor) +{ + if (FakeVimHandler *handler = m_editorToHandler.value(editor, 0)) + handler->enterCommandMode(); +} + void FakeVimPluginPrivate::allDocumentsRenamed(const QString &oldName, const QString &newName) { renameFileNameInEditors(oldName, newName);