From 21f15207fbc352604d25ac4f6770bf507e63a5b9 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Tue, 27 Jan 2009 12:44:42 +0100
Subject: [PATCH]     Fixes:    fakevim: more 'z' commands

---
 src/plugins/fakevim/fakevimhandler.cpp | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 591b307d960..b63ebd90627 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -688,17 +688,27 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
         indentRegion(m_tc.block(), m_tc.block().next());
         finishMovement();
     } else if (m_submode == ZSubMode) {
-        if (key == Key_Return) {
-            // cursor line to top of window, cursor on first non-blank
+        //qDebug() << "Z_MODE " << cursorLineInDocument() << linesOnScreen();
+        if (key == Key_Return || key == 't') { // cursor line to top of window
+            if (!m_mvcount.isEmpty())
+                m_tc.setPosition(positionForLine(count()));
             scrollToLineInDocument(cursorLineInDocument());
-            moveToFirstNonBlankOnLine();
+            if (key == Key_Return)
+                moveToFirstNonBlankOnLine();
             finishMovement();
-        } else if (key == '.') { // center cursor line 
+        } else if (key == '.' || key == 'z') { // cursor line to center of window
+            if (!m_mvcount.isEmpty())
+                m_tc.setPosition(positionForLine(count()));
             scrollToLineInDocument(cursorLineInDocument() - linesOnScreen() / 2);
-            moveToFirstNonBlankOnLine();
+            if (key == '.')
+                moveToFirstNonBlankOnLine();
             finishMovement();
-        } else if (key == 'z') { // center cursor line 
-            scrollToLineInDocument(cursorLineInDocument() - linesOnScreen() / 2);
+        } else if (key == '-' || key == 'b') { // cursor line to bottom of window
+            if (!m_mvcount.isEmpty())
+                m_tc.setPosition(positionForLine(count()));
+            scrollToLineInDocument(cursorLineInDocument() - linesOnScreen() - 1);
+            if (key == '-')
+                moveToFirstNonBlankOnLine();
             finishMovement();
         } else {
             qDebug() << "IGNORED Z_MODE " << key << text;
-- 
GitLab