diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 694b7a65f77c14acdb72c4a602d3c7df92a14ef3..a734b46a46cd4598e702bbbb45be5fe2e67b841e 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -2132,15 +2132,10 @@ EventResult FakeVimHandler::Private::handleMiniBufferModes(int key, int unmodifi if (!m_commandBuffer.isEmpty()) { m_commandHistory.takeLast(); m_commandHistory.append(m_commandBuffer); - // FIXME: This was inserted to prevent crashes when the - // editor 'vanishes' but broke things like :<line>. - // How can the crash be reproduced? - // when EDITOR(setTextCursor(m_tc)); handleExCommand(m_commandBuffer); - //if (m_textedit || m_plaintextedit) { - // m_tc = EDITOR(textCursor()); - leaveVisualMode(); - //} + if (m_textedit || m_plaintextedit) { + leaveVisualMode(); + } } } else if (unmodified == Key_Return && isSearchMode()) { if (!m_commandBuffer.isEmpty()) { @@ -2559,7 +2554,10 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) void FakeVimHandler::Private::passUnknownExCommand(const QString &cmd) { + EDITOR(setTextCursor(m_tc)); emit q->handleExCommandRequested(cmd); + if (m_plaintextedit || m_textedit) + m_tc = EDITOR(textCursor()); } void FakeVimHandler::Private::passUnknownSetCommand(const QString &arg)