From 2622eb2415c46a3c77545dd1aa9da50f56992b23 Mon Sep 17 00:00:00 2001 From: Lukas Holecek <hluk@email.cz> Date: Wed, 16 Jan 2013 17:49:37 +0100 Subject: [PATCH] FakeVim: Remember that cursor is at the end of line Change-Id: I62098a409028593664b813931d5974de5e787993 Reviewed-by: hjk <qthjk@ovi.com> --- src/plugins/fakevim/fakevim_test.cpp | 7 +++++++ src/plugins/fakevim/fakevimhandler.cpp | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp index 1e9019055b3..4219f3607b6 100644 --- a/src/plugins/fakevim/fakevim_test.cpp +++ b/src/plugins/fakevim/fakevim_test.cpp @@ -421,6 +421,13 @@ void FakeVimPlugin::test_vim_movement() data.setText("abc def" N "ghi"); KEYS("$a", "abc def" X N "ghi"); + data.setText("abc" N "def ghi"); + KEYS("i<end><down>", "abc" N "def ghi" X); + data.setText("abc" N "def ghi"); + KEYS("<end>i<down>", "abc" N "de" X "f ghi"); + data.setText("abc" N "def ghi"); + KEYS("<end>a<down>", "abc" N "def" X " ghi"); + // paragraph movement data.setText("abc" N N "def"); KEYS("}", "abc" N X N "def"); diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 30b75efab82..6731ddbb4af 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -4220,6 +4220,7 @@ EventResult FakeVimHandler::Private::handleInsertMode(const Input &input) moveBehindEndOfLine(); move = true; setTargetColumn(); + m_targetColumn = -1; } else if (input.isReturn() || input.isControl('j') || input.isControl('m')) { joinPreviousEditBlock(); m_submode = NoSubMode; @@ -6686,7 +6687,12 @@ void FakeVimHandler::Private::enterInsertMode() m_subsubmode = NoSubSubMode; m_lastInsertion.clear(); m_oldPosition = position(); - g.returnToMode = InsertMode; + if (g.returnToMode != InsertMode) { + g.returnToMode = InsertMode; + // If entering insert mode from command mode, m_targetColumn shouldn't be -1 (end of line). + if (m_targetColumn == -1) + setTargetColumn(); + } } void FakeVimHandler::Private::initVisualBlockInsertMode(QChar command) -- GitLab