From b748b12d03a39893beb2aba86809d274b4737a28 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Sat, 27 Dec 2008 13:39:34 +0100
Subject: [PATCH] basic support for 'J'

---
 src/plugins/fakevim/handler.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/plugins/fakevim/handler.cpp b/src/plugins/fakevim/handler.cpp
index cb2bba2b8b8..7bdd92f3e1d 100644
--- a/src/plugins/fakevim/handler.cpp
+++ b/src/plugins/fakevim/handler.cpp
@@ -156,6 +156,7 @@ public:
     bool isSearchCommand() const
         { return m_commandCode == '?' || m_commandCode == '/'; }
     int m_commandCode; // ?, /, : ...
+    int m_gflag;  // whether current command started with 'g'
     
     QString m_commandBuffer;
 
@@ -182,6 +183,7 @@ FakeVimHandler::Private::Private(FakeVimHandler *parent)
     m_fakeEnd = false;
     m_lastSearchForward = true;
     m_register = '"';
+    m_gflag = false;
 }
 
 bool FakeVimHandler::Private::eventFilter(QObject *ob, QEvent *ev)
@@ -261,6 +263,7 @@ void FakeVimHandler::Private::finishMovement()
     }
     m_mvcount.clear();
     m_opcount.clear();
+    m_gflag = false;
     m_register = '"';
     m_tc.clearSelection();
     updateCommandBuffer();
@@ -377,6 +380,8 @@ void FakeVimHandler::Private::handleCommandMode(int key, const QString &text)
     } else if (key == 'f' || key == 'F') {
         m_subsubmode = FtSubSubMode;
         m_subsubdata = key;
+    } else if (key == 'g') {
+        m_gflag = true;
     } else if (key == 'h' || key == Key_Left) {
         int n = qMin(count(), leftDist());
         if (m_fakeEnd && m_tc.block().length() > 1)
@@ -394,6 +399,15 @@ void FakeVimHandler::Private::handleCommandMode(int key, const QString &text)
     } else if (key == 'j' || key == Key_Down) {
         m_tc.movePosition(Down, KeepAnchor, count());
         finishMovement();
+    } else if (key == 'J') {
+        if (m_submode == NoSubMode) {
+            for (int i = qMax(count(), 2) - 1; --i >= 0; ) {
+                m_tc.movePosition(EndOfLine);
+                m_tc.deleteChar();
+                m_tc.insertText(" ");
+            }
+            m_tc.movePosition(Left, MoveAnchor, 1);
+        }
     } else if (key == 'k' || key == Key_Up) {
         m_tc.movePosition(Up, KeepAnchor, count());
         finishMovement();
-- 
GitLab