forked from qt-creator/qt-creator
fakevim: fix mark positions after <Delete>
(cherry picked from commit 7ccf903ee3d9da4a104310ed423130857d59d91b)
This commit is contained in:
@@ -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)) {
|
||||||
|
Reference in New Issue
Block a user