From d47a001bc1e2db1d1dfd07b6654df02d1e4b1feb Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Thu, 12 Mar 2009 14:36:58 +0100
Subject: [PATCH] Fixes: fakevim: remove indentation after pressing 'J'

---
 src/plugins/fakevim/fakevimhandler.cpp | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 073ddc000ec..329fe456a6c 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -294,6 +294,8 @@ private:
     void updateSelection();
     void quit();
     QWidget *editor() const;
+    QChar characterAtCursor() const
+        { return m_tc.document()->characterAt(m_tc.position()); }
 
 public:
     QTextEdit *m_textedit;
@@ -1146,6 +1148,8 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
             for (int i = qMax(count(), 2) - 1; --i >= 0; ) {
                 moveToEndOfLine();
                 recordRemoveNextChar();
+                while (characterAtCursor() == ' ')
+                    recordRemoveNextChar();
                 if (!m_gflag)
                     recordInsertText(" ");
             }
@@ -1999,12 +2003,10 @@ void FakeVimHandler::Private::moveToNextWord(bool simple)
 {
     // FIXME: 'w' should stop on empty lines, too
     int repeat = count();
-    QTextDocument *doc = m_tc.document();
     int n = lastPositionInDocument() - 1;
-    QChar c = doc->characterAt(m_tc.position());
-    int lastClass = charClass(c, simple);
+    int lastClass = charClass(characterAtCursor(), simple);
     while (true) {
-        c = doc->characterAt(m_tc.position());
+        QChar c = characterAtCursor();
         int thisClass = charClass(c, simple);
         if (thisClass != lastClass && thisClass != 0)
             --repeat;
-- 
GitLab