forked from qt-creator/qt-creator
fakevim: fix cursor position for <n>j or <n>k and end or begin of document
This commit is contained in:
@@ -620,8 +620,9 @@ void FakeVimHandler::Private::moveDown(int n)
|
|||||||
m_tc.movePosition(Down, MoveAnchor, n);
|
m_tc.movePosition(Down, MoveAnchor, n);
|
||||||
#else
|
#else
|
||||||
const int col = m_tc.position() - m_tc.block().position();
|
const int col = m_tc.position() - m_tc.block().position();
|
||||||
const int line = m_tc.block().blockNumber();
|
const int lastLine = m_tc.document()->lastBlock().blockNumber();
|
||||||
const QTextBlock &block = m_tc.document()->findBlockByNumber(line + n);
|
const int targetLine = qMax(0, qMin(lastLine, m_tc.block().blockNumber() + n));
|
||||||
|
const QTextBlock &block = m_tc.document()->findBlockByNumber(targetLine);
|
||||||
const int pos = block.position();
|
const int pos = block.position();
|
||||||
setPosition(pos + qMin(block.length() - 1, col));
|
setPosition(pos + qMin(block.length() - 1, col));
|
||||||
moveToTargetColumn();
|
moveToTargetColumn();
|
||||||
|
@@ -302,6 +302,7 @@ void tst_FakeVim::command_e()
|
|||||||
move("e", "int main(int argc, char *arg@v[])");
|
move("e", "int main(int argc, char *arg@v[])");
|
||||||
move("e", "int main(int argc, char *argv[]@)");
|
move("e", "int main(int argc, char *argv[]@)");
|
||||||
move("e", "@{");
|
move("e", "@{");
|
||||||
|
move("10k","@\n"); // home.
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_FakeVim::command_i()
|
void tst_FakeVim::command_i()
|
||||||
|
Reference in New Issue
Block a user