fakevim: fix mark positions after <Delete>

(cherry picked from commit 7ccf903ee3d9da4a104310ed423130857d59d91b)
This commit is contained in:
hjk
2010-07-06 16:38:12 +02:00
parent 312509fcdb
commit 6f58124007

View File

@@ -2035,22 +2035,25 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input)
m_opcount = m_mvcount; m_opcount = m_mvcount;
m_mvcount.clear(); m_mvcount.clear();
m_submode = DeleteSubMode; m_submode = DeleteSubMode;
} else if ((input.is('d') || input.is('x')) && isVisualCharMode()) { } else if ((input.is('d') || input.is('x') || input.isKey(Key_Delete))
leaveVisualMode(); && isVisualMode()) {
m_submode = DeleteSubMode; if (isVisualCharMode()) {
finishMovement(); leaveVisualMode();
} else if ((input.is('d') || input.is('x')) && isVisualLineMode()) { m_submode = DeleteSubMode;
leaveVisualMode(); finishMovement();
m_rangemode = RangeLineMode; } else if (isVisualLineMode()) {
yankText(currentRange(), m_register); leaveVisualMode();
removeText(currentRange()); m_rangemode = RangeLineMode;
handleStartOfLine(); yankText(currentRange(), m_register);
} else if ((input.is('d') || input.is('x')) && isVisualBlockMode()) { removeText(currentRange());
leaveVisualMode(); handleStartOfLine();
m_rangemode = RangeBlockMode; } else if (isVisualBlockMode()) {
yankText(currentRange(), m_register); leaveVisualMode();
removeText(currentRange()); m_rangemode = RangeBlockMode;
setPosition(qMin(position(), anchor())); yankText(currentRange(), m_register);
removeText(currentRange());
setPosition(qMin(position(), anchor()));
}
} else if (input.is('D') && isNoVisualMode()) { } else if (input.is('D') && isNoVisualMode()) {
if (atEndOfLine()) if (atEndOfLine())
moveLeft(); moveLeft();
@@ -2486,6 +2489,8 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input)
setAnchor(); setAnchor();
moveRight(qMin(1, rightDist())); moveRight(qMin(1, rightDist()));
removeText(currentRange()); removeText(currentRange());
if (atEndOfLine())
moveLeft();
} else if (input.isKey(Key_BracketLeft) || input.isKey(Key_BracketRight)) { } else if (input.isKey(Key_BracketLeft) || input.isKey(Key_BracketRight)) {
} else if (input.isControl(Key_BracketRight)) { } else if (input.isControl(Key_BracketRight)) {