fakevim: fix 'ddp'

Was broken recently during the yank/paste rework.
This commit is contained in:
hjk
2009-08-18 09:46:42 +02:00
parent ec2b2330aa
commit 06140f9c7a
2 changed files with 21 additions and 7 deletions

View File

@@ -954,12 +954,15 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
setDotCommand("%1cc", count()); setDotCommand("%1cc", count());
finishMovement(); finishMovement();
} else if (m_submode == DeleteSubMode && key == 'd') { // tested } else if (m_submode == DeleteSubMode && key == 'd') { // tested
moveToStartOfLine();
setTargetColumn();
setAnchor();
moveDown(count());
m_movetype = MoveLineWise; m_movetype = MoveLineWise;
int endPos = firstPositionInLine(lineForPosition(position()) + count() - 1);
Range range(position(), endPos, RangeLineMode);
yankText(range);
removeText(range);
setDotCommand("%1dd", count()); setDotCommand("%1dd", count());
m_submode = NoSubMode;
moveToFirstNonBlankOnLine();
setTargetColumn();
finishMovement(); finishMovement();
} else if (m_submode == YankSubMode && key == 'y') { } else if (m_submode == YankSubMode && key == 'y') {
m_movetype = MoveLineWise; m_movetype = MoveLineWise;

View File

@@ -58,6 +58,7 @@ private slots:
// command mode // command mode
void command_cc(); void command_cc();
void command_dd(); void command_dd();
void command_dd_2();
void command_dollar(); void command_dollar();
void command_down(); void command_down();
void command_dfx_down(); void command_dfx_down();
@@ -277,13 +278,23 @@ void tst_FakeVim::command_dd()
move("j", "@" + l[1]); move("j", "@" + l[1]);
check("dd", l[0] + "\n@" + lmid(2)); check("dd", l[0] + "\n@" + lmid(2));
check(".", l[0] + "\n@" + lmid(3)); check(".", l[0] + "\n@" + lmid(3));
check("3dd", l[0] + "\n@" + lmid(6)); check("3dd", l[0] + "\n @QApplication app(argc, argv);\n" + lmid(7));
check("8l", l[0] + "\n QApp@lication 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("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)); 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() void tst_FakeVim::command_dollar()
{ {
setup(); setup();