diff --git a/src/plugins/fakevim/handler.cpp b/src/plugins/fakevim/handler.cpp index 9a827a2ecc527819a34cbe50db3bdd58b241cbc1..5c5f89e6699b1c5d2ef6517253ce41511351ea69 100644 --- a/src/plugins/fakevim/handler.cpp +++ b/src/plugins/fakevim/handler.cpp @@ -81,11 +81,11 @@ public: static int control(int key) { return key + 256; } void init(); - void handleKey(int key); - void handleInsertMode(int key); - void handleCommandMode(int key); - void handleRegisterMode(int key); - void handleExMode(int key); + void handleKey(int key, const QString &text); + void handleInsertMode(int key, const QString &text); + void handleCommandMode(int key, const QString &text); + void handleRegisterMode(int key, const QString &text); + void handleExMode(int key, const QString &text); void finishMovement(); void updateCommandBuffer(); void search(const QString &needle, bool backwards); @@ -153,7 +153,7 @@ bool FakeVimHandler::Private::eventFilter(QObject *ob, QEvent *ev) key += 32; if ((keyEvent->modifiers() & Qt::ControlModifier) != 0) key += 256; - handleKey(key); + handleKey(key, keyEvent->text()); // We fake vi-style end-of-line behaviour m_fakeEnd = atEol() && m_mode == CommandMode; @@ -176,14 +176,14 @@ bool FakeVimHandler::Private::eventFilter(QObject *ob, QEvent *ev) return true; } -void FakeVimHandler::Private::handleKey(int key) +void FakeVimHandler::Private::handleKey(int key, const QString &text) { if (m_mode == InsertMode) - handleInsertMode(key); + handleInsertMode(key, text); else if (m_mode == CommandMode) - handleCommandMode(key); + handleCommandMode(key, text); else if (m_mode == ExMode) - handleExMode(key); + handleExMode(key, text); } void FakeVimHandler::Private::finishMovement() @@ -218,8 +218,10 @@ void FakeVimHandler::Private::showMessage(const QString &msg) emit q->commandBufferChanged(msg); } -void FakeVimHandler::Private::handleCommandMode(int key) +void FakeVimHandler::Private::handleCommandMode(int key, const QString &text) { + Q_UNUSED(text) + //qDebug() << "-> MODE: " << m_mode << " KEY: " << key; if (m_submode == RegisterSubMode) { m_register = key; @@ -334,7 +336,7 @@ void FakeVimHandler::Private::handleCommandMode(int key) } } -void FakeVimHandler::Private::handleInsertMode(int key) +void FakeVimHandler::Private::handleInsertMode(int key, const QString &text) { if (key == Key_Escape) { m_mode = CommandMode; @@ -351,15 +353,15 @@ void FakeVimHandler::Private::handleInsertMode(int key) m_tc.insertBlock(); } else if (key == Key_Backspace) { m_tc.deletePreviousChar(); - } else if (key == Key_Tab) { - m_tc.insertText(QChar(9)); } else { - m_tc.insertText(QChar(key)); + m_tc.insertText(text); } } -void FakeVimHandler::Private::handleExMode(int key) +void FakeVimHandler::Private::handleExMode(int key, const QString &text) { + Q_UNUSED(text) + if (key == Key_Escape) { m_commandBuffer.clear(); m_commandCode = 0;