From 3e1032783be7ba544218730633c998db1be7ed48 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 28 Jan 2009 18:42:43 +0100 Subject: [PATCH] Fixes: fakevim: 'cw' was off by one again --- src/plugins/fakevim/fakevimhandler.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 5a30eac3265..e0b41c6418c 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -483,16 +483,18 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) m_marks['>'] = m_tc.position(); if (m_submode == ChangeSubMode) { + if (m_moveType == MoveInclusive) + moveRight(); // correction if (!dotCommand.isEmpty()) m_dotCommand = "c" + dotCommand; QString text = recordRemoveSelectedText(); - qDebug() << "CHANGING TO INSERT MODE" << text; + //qDebug() << "CHANGING TO INSERT MODE" << text; m_registers[m_register] = text; m_mode = InsertMode; m_submode = NoSubMode; } else if (m_submode == DeleteSubMode) { if (m_moveType == MoveInclusive) - moveRight(); // correct + moveRight(); // correction if (!dotCommand.isEmpty()) m_dotCommand = "d" + dotCommand; m_registers[m_register] = recordRemoveSelectedText(); @@ -1090,11 +1092,13 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (key == 'w') { // Special case: "cw" and "cW" work the same as "ce" and "cE" if the // cursor is on a non-blank. - if (m_submode == ChangeSubMode) + if (m_submode == ChangeSubMode) { moveToWordBoundary(false, true); - else + m_moveType = MoveInclusive; + } else { moveToNextWord(false); - m_moveType = MoveExclusive; + m_moveType = MoveExclusive; + } finishMovement("w"); } else if (key == 'W') { moveToNextWord(true); -- GitLab