From ab47d78c0c82d3806349462183c463a98d574885 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Mon, 4 May 2009 09:35:46 +0200 Subject: [PATCH] fakevim: handle Key_Insert --- src/plugins/fakevim/fakevimhandler.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 035fdb67928..52eb88e9164 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -794,7 +794,10 @@ void FakeVimHandler::Private::updateMiniBuffer() msg = "-- VISUAL BLOCK --"; } } else if (m_mode == InsertMode) { - msg = "-- INSERT --"; + if (m_submode == ReplaceSubMode) + msg = "-- REPLACE --"; + else + msg = "-- INSERT --"; } else { if (m_mode == SearchForwardMode) msg += '/'; @@ -1200,7 +1203,7 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified, moveDown(qMax(count() - 1, 0)); handleStartOfLine(); finishMovement(); - } else if (key == 'i') { + } else if (key == 'i' || key == Key_Insert) { setDotCommand("i"); // setDotCommand("%1i", count()); enterInsertMode(); updateMiniBuffer(); @@ -1484,6 +1487,16 @@ EventResult FakeVimHandler::Private::handleInsertMode(int key, int, m_dotCommand += QChar(27); recordNewUndo(); enterCommandMode(); + } else if (key == Key_Insert) { + if (m_submode == ReplaceSubMode) { + EDITOR(setCursorWidth(m_cursorWidth)); + EDITOR(setOverwriteMode(false)); + m_submode = NoSubMode; + } else { + EDITOR(setCursorWidth(m_cursorWidth)); + EDITOR(setOverwriteMode(true)); + m_submode = ReplaceSubMode; + } } else if (key == Key_Left) { moveLeft(count()); m_lastInsertion.clear(); -- GitLab