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