Fixes: fakevim: improvements for 'o' and 's'

This commit is contained in:
hjk
2009-01-27 09:46:57 +01:00
parent 530f0fc2da
commit 6058a885f2

View File

@@ -908,11 +908,13 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
moveToFirstNonBlankOnLine(); moveToFirstNonBlankOnLine();
finishMovement(); finishMovement();
} else if (key == 'i') { } else if (key == 'i') {
recordBeginGroup();
enterInsertMode(); enterInsertMode();
updateMiniBuffer(); updateMiniBuffer();
if (atEndOfLine()) if (atEndOfLine())
moveLeft(); moveLeft();
} else if (key == 'I') { } else if (key == 'I') {
recordBeginGroup();
setAnchor(); setAnchor();
enterInsertMode(); enterInsertMode();
if (m_gflag) if (m_gflag)
@@ -976,13 +978,13 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
} else if (key == 'N') { } else if (key == 'N') {
search(lastSearchString(), !m_lastSearchForward); search(lastSearchString(), !m_lastSearchForward);
} else if (key == 'o' || key == 'O') { } else if (key == 'o' || key == 'O') {
recordBeginGroup();
recordMove();
enterInsertMode(); enterInsertMode();
moveToFirstNonBlankOnLine(); moveToFirstNonBlankOnLine();
recordBeginGroup();
int numSpaces = leftDist(); int numSpaces = leftDist();
moveUp(); if (key == 'O')
if (key == 'o') moveUp();
moveDown();
moveToEndOfLine(); moveToEndOfLine();
recordInsertText("\n"); recordInsertText("\n");
moveToStartOfLine(); moveToStartOfLine();
@@ -990,7 +992,6 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
recordInsertText(QString(indentDist(), ' ')); recordInsertText(QString(indentDist(), ' '));
else else
recordInsertText(QString(numSpaces, ' ')); recordInsertText(QString(numSpaces, ' '));
recordEndGroup();
} else if (key == 'p' || key == 'P') { } else if (key == 'p' || key == 'P') {
recordBeginGroup(); recordBeginGroup();
QString text = m_registers[m_register]; QString text = m_registers[m_register];
@@ -1034,8 +1035,13 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
redo(); redo();
} else if (key == 's') { } else if (key == 's') {
recordBeginGroup(); recordBeginGroup();
m_submode = ChangeSubMode; setAnchor();
moveRight(qMin(count(), rightDist())); moveRight(qMin(count(), rightDist()));
m_registers[m_register] = recordRemoveSelectedText();
//m_dotCommand = QString("%1s").arg(count());
m_opcount.clear();
m_mvcount.clear();
enterInsertMode();
} else if (key == 't' || key == 'T') { } else if (key == 't' || key == 'T') {
m_subsubmode = FtSubSubMode; m_subsubmode = FtSubSubMode;
m_subsubdata = key; m_subsubdata = key;
@@ -2043,7 +2049,6 @@ void FakeVimHandler::Private::enterInsertMode()
EDITOR(setOverwriteMode(false)); EDITOR(setOverwriteMode(false));
m_mode = InsertMode; m_mode = InsertMode;
m_lastInsertion.clear(); m_lastInsertion.clear();
recordBeginGroup();
} }
void FakeVimHandler::Private::enterCommandMode() void FakeVimHandler::Private::enterCommandMode()