From db150ab61d7197f9a7a6d3bb51c4dc36f9987ed2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Aum=C3=BCller?= <aumuell@reserv.at>
Date: Fri, 19 Feb 2010 13:01:39 +0100
Subject: [PATCH] fakevim: make sure that cursor is positioned before the
 character where text would be inserted with 'i'

Merge-request: 113
Reviewed-by: hjk <qtc-committer@nokia.com>
---
 src/plugins/fakevim/fakevimhandler.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index a734b46a46c..06239d4089f 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -650,6 +650,9 @@ EventResult FakeVimHandler::Private::handleEvent(QKeyEvent *ev)
                 Range range(m_oldPosition, m_tc.position());
                 m_lastInsertion.append(text(range));
             }
+        } else if (!isVisualMode()) {
+            if (atEndOfLine())
+                moveLeft();
         }
     }
 
@@ -3366,6 +3369,8 @@ void FakeVimHandler::Private::undo()
 
     if (m_undoCursorPosition.contains(rev))
         m_tc.setPosition(m_undoCursorPosition[rev]);
+    if (atEndOfLine())
+        moveLeft();
 }
 
 void FakeVimHandler::Private::redo()
@@ -3398,6 +3403,8 @@ void FakeVimHandler::Private::enterCommandMode()
 {
     EDITOR(setCursorWidth(m_cursorWidth));
     EDITOR(setOverwriteMode(true));
+    if (atEndOfLine())
+        moveLeft();
     m_mode = CommandMode;
 }
 
-- 
GitLab