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