forked from qt-creator/qt-creator
fakevim: Correct cursor position after yank
Change-Id: I845eeebe44ed859cc96d69fbd660fce56cc1418b Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
@@ -1205,6 +1205,12 @@ void FakeVimPlugin::test_vim_copy_paste()
|
|||||||
data.setText("abc");
|
data.setText("abc");
|
||||||
KEYS("yyp", "abc" N X "abc");
|
KEYS("yyp", "abc" N X "abc");
|
||||||
KEYS("4p", "abc" N "abc" N X "abc" N "abc" N "abc" N "abc");
|
KEYS("4p", "abc" N "abc" N X "abc" N "abc" N "abc" N "abc");
|
||||||
|
|
||||||
|
// cursor position after yank
|
||||||
|
data.setText("ab" X "c" N "def");
|
||||||
|
KEYS("Vjy", X "abc" N "def");
|
||||||
|
data.setText("ab" X "c" N "def");
|
||||||
|
KEYS("<c-v>jhhy", X "abc" N "def");
|
||||||
}
|
}
|
||||||
|
|
||||||
void FakeVimPlugin::test_vim_undo_redo()
|
void FakeVimPlugin::test_vim_undo_redo()
|
||||||
|
|||||||
@@ -2605,10 +2605,18 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommandMovement)
|
|||||||
setTargetColumn();
|
setTargetColumn();
|
||||||
endEditBlock();
|
endEditBlock();
|
||||||
} else if (m_submode == YankSubMode) {
|
} else if (m_submode == YankSubMode) {
|
||||||
setPosition(qMin(position(), anchor()));
|
const QTextCursor tc = cursor();
|
||||||
|
if (m_rangemode == RangeBlockMode) {
|
||||||
|
const int pos1 = tc.block().position();
|
||||||
|
const int pos2 = document()->findBlock(tc.anchor()).position();
|
||||||
|
const int col = qMin(tc.position() - pos1, tc.anchor() - pos2);
|
||||||
|
setPosition(qMin(pos1, pos2) + col);
|
||||||
|
} else {
|
||||||
|
setPosition(qMin(position(), anchor()));
|
||||||
|
if (m_rangemode == RangeLineMode)
|
||||||
|
moveToStartOfLine();
|
||||||
|
}
|
||||||
leaveVisualMode();
|
leaveVisualMode();
|
||||||
if (anchor() <= position())
|
|
||||||
setPosition(anchor());
|
|
||||||
} else if (m_submode == InvertCaseSubMode
|
} else if (m_submode == InvertCaseSubMode
|
||||||
|| m_submode == UpCaseSubMode
|
|| m_submode == UpCaseSubMode
|
||||||
|| m_submode == DownCaseSubMode) {
|
|| m_submode == DownCaseSubMode) {
|
||||||
|
|||||||
Reference in New Issue
Block a user