diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index f78bd890ac57b5eed88c96493451c71bd5dd440e..bb46ba2c810b0e6c62c6514ef6ba7473aa6fb037 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -253,7 +253,10 @@ public: void moveToFirstNonBlankOnLine(); void moveToTargetColumn(); - void setTargetColumn() { m_targetColumn = leftDist(); } + void setTargetColumn() { + m_targetColumn = leftDist(); + //qDebug() << "TARGET: " << m_targetColumn; + } void moveToNextWord(bool simple); void moveToMatchingParanthesis(); void moveToWordBoundary(bool simple, bool forward); @@ -672,6 +675,8 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) m_submode = NoSubMode; if (atEndOfLine()) moveLeft(); + else + setTargetColumn(); } else if (m_submode == YankSubMode) { m_registers[m_register] = selectedText(); setPosition(m_savedYankPosition); @@ -2507,9 +2512,12 @@ void FakeVimHandler::Private::replay(const QString &command, int n) { //qDebug() << "REPLAY: " << command; m_inReplay = true; - for (int i = n; --i >= 0; ) - foreach (QChar c, command) + for (int i = n; --i >= 0; ) { + foreach (QChar c, command) { + //qDebug() << " REPLAY: " << QString(c); handleKey(c.unicode(), c.unicode(), QString(c)); + } + } m_inReplay = false; } diff --git a/tests/auto/fakevim/main.cpp b/tests/auto/fakevim/main.cpp index 991900d12843ef9b3b2782ea290c76397c435aef..d4b8030acc68700a790bedea899b7ea454d738de 100644 --- a/tests/auto/fakevim/main.cpp +++ b/tests/auto/fakevim/main.cpp @@ -60,6 +60,7 @@ private slots: void command_dd(); void command_dollar(); void command_down(); + void command_dfx_down(); void command_e(); void command_i(); void command_left(); @@ -296,6 +297,18 @@ void tst_FakeVim::command_down() move("4j", "@ return app.exec()"); } +void tst_FakeVim::command_dfx_down() +{ + setup(); + check("j4l", l[0] + "\n#inc@lude <QtCore>\n" + lmid(2)); + check("df ", l[0] + "\n#inc@<QtCore>\n" + lmid(2)); + check("j", l[0] + "\n#inc<QtCore>\n#inc@lude <QtGui>\n" + lmid(3)); + check(".", l[0] + "\n#inc<QtCore>\n#inc@<QtGui>\n" + lmid(3)); +return; + check("u", l[0] + "\n#inc<QtCore>\n#inc@lude <QtGui>\n" + lmid(3)); + check("u", l[0] + "\n#inc@lude <QtCore>\n" + lmid(2)); +} + void tst_FakeVim::command_e() { setup();