aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/fakevim/fakevim_test.cpp2
-rw-r--r--src/plugins/fakevim/fakevimhandler.cpp4
2 files changed, 5 insertions, 1 deletions
diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp
index 0508de1966..ad7b013277 100644
--- a/src/plugins/fakevim/fakevim_test.cpp
+++ b/src/plugins/fakevim/fakevim_test.cpp
@@ -748,6 +748,8 @@ void FakeVimPlugin::test_vim_insert()
KEYS("i<c-o>0x", "abc" N "x" X "def");
data.setText("abc" N "de" X "f");
KEYS("i<c-o>ggx", "x" X "abc" N "def");
+ data.setText("abc" N "def" N "ghi");
+ KEYS("i<c-o>vjlolx", "a" X "f" N "ghi");
// <INSERT> to toggle between insert and replace mode
data.setText("abc" N "def");
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index a20274ea2f..424171d670 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -3492,7 +3492,9 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommandMovement)
void FakeVimHandler::Private::leaveCurrentMode()
{
- if (g.returnToMode == CommandMode)
+ if (isVisualMode())
+ enterCommandMode(g.returnToMode);
+ else if (g.returnToMode == CommandMode)
enterCommandMode();
else if (g.returnToMode == InsertMode)
enterInsertMode();