From 95fbb4842b7a03b2830f1385d438d4b4f812b540 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Thu, 8 Jan 2009 13:43:24 +0100
Subject: [PATCH] handle 'P'

---
 src/plugins/fakevim/handler.cpp | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/plugins/fakevim/handler.cpp b/src/plugins/fakevim/handler.cpp
index 689f4d6dd8a..3d3c228a12a 100644
--- a/src/plugins/fakevim/handler.cpp
+++ b/src/plugins/fakevim/handler.cpp
@@ -299,7 +299,7 @@ bool FakeVimHandler::Private::eventFilter(QObject *ob, QEvent *ev)
         key += 32;
     if ((keyEvent->modifiers() & Qt::ControlModifier) != 0)
         key += 256;
-    handleKey(key, keyEvent->text());
+    bool handled = handleKey(key, keyEvent->text());
 
     // We fake vi-style end-of-line behaviour
     m_fakeEnd = (atEol() && m_mode == CommandMode);
@@ -309,7 +309,7 @@ bool FakeVimHandler::Private::eventFilter(QObject *ob, QEvent *ev)
 
     EDITOR(setTextCursor(m_tc));
     EDITOR(ensureCursorVisible());
-    return true;
+    return handled;
 }
 
 bool FakeVimHandler::Private::handleKey(int key, const QString &text)
@@ -669,16 +669,18 @@ bool FakeVimHandler::Private::handleCommandMode(int key, const QString &text)
         m_tc.movePosition(StartOfLine, MoveAnchor);
         m_tc.movePosition(Left, MoveAnchor, 1);
         m_tc.insertText("\n");
-    } else if (key == 'p') {
+    } else if (key == 'p' || key == 'P') {
         QString text = m_registers[m_register];
         int n = text.count(QChar(ParagraphSeparator));
         if (n > 0) {
             m_tc.movePosition(StartOfLine);
-            m_tc.movePosition(Down);
+            if (key == 'p')
+                m_tc.movePosition(Down);
             m_tc.insertText(text);
             m_tc.movePosition(Up, MoveAnchor, n);
         } else {
-            m_tc.movePosition(Right);
+            if (key == 'p')
+                m_tc.movePosition(Right);
             m_tc.insertText(text);
             m_tc.movePosition(Left);
         }
-- 
GitLab