From 06140f9c7a06680e070b806056618569361dc549 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Tue, 18 Aug 2009 09:46:42 +0200 Subject: [PATCH] fakevim: fix 'ddp' Was broken recently during the yank/paste rework. --- src/plugins/fakevim/fakevimhandler.cpp | 11 +++++++---- tests/auto/fakevim/main.cpp | 17 ++++++++++++++--- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 7a6f901b4b3..eb98ead8fc4 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -954,12 +954,15 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified, setDotCommand("%1cc", count()); finishMovement(); } else if (m_submode == DeleteSubMode && key == 'd') { // tested - moveToStartOfLine(); - setTargetColumn(); - setAnchor(); - moveDown(count()); m_movetype = MoveLineWise; + int endPos = firstPositionInLine(lineForPosition(position()) + count() - 1); + Range range(position(), endPos, RangeLineMode); + yankText(range); + removeText(range); setDotCommand("%1dd", count()); + m_submode = NoSubMode; + moveToFirstNonBlankOnLine(); + setTargetColumn(); finishMovement(); } else if (m_submode == YankSubMode && key == 'y') { m_movetype = MoveLineWise; diff --git a/tests/auto/fakevim/main.cpp b/tests/auto/fakevim/main.cpp index fc873e8317f..9201ba7d5e5 100644 --- a/tests/auto/fakevim/main.cpp +++ b/tests/auto/fakevim/main.cpp @@ -58,6 +58,7 @@ private slots: // command mode void command_cc(); void command_dd(); + void command_dd_2(); void command_dollar(); void command_down(); void command_dfx_down(); @@ -277,13 +278,23 @@ void tst_FakeVim::command_dd() move("j", "@" + l[1]); check("dd", l[0] + "\n@" + lmid(2)); check(".", l[0] + "\n@" + lmid(3)); - check("3dd", l[0] + "\n@" + lmid(6)); - check("8l", l[0] + "\n QApp@lication app(argc, argv);\n" + lmid(7)); + check("3dd", l[0] + "\n @QApplication app(argc, argv);\n" + lmid(7)); + check("4l", l[0] + "\n QApp@lication app(argc, argv);\n" + lmid(7)); check("dd", l[0] + "\n@" + lmid(7)); - check(".", l[0] + "\n@" + lmid(8)); + check(".", l[0] + "\n @return app.exec();\n" + lmid(9)); check("dd", l[0] + "\n@" + lmid(9)); } +void tst_FakeVim::command_dd_2() +{ + setup(); + move("j", "@" + l[1]); + check("dd", l[0] + "\n@" + lmid(2)); + check("p", l[0] + "\n" + l[2] + "\n@" + l[1] + "\n" + lmid(3)); +return; // FIXME + check("u", l[0] + "\n@" + lmid(2)); +} + void tst_FakeVim::command_dollar() { setup(); -- GitLab