diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp index a44f630f370..6bdf31be440 100644 --- a/src/plugins/fakevim/fakevim_test.cpp +++ b/src/plugins/fakevim/fakevim_test.cpp @@ -843,6 +843,15 @@ void FakeVimPlugin::test_vim_block_selection() data.setText("\"\""); KEYS("di\"", "\"" X "\""); + // visual selection + data.setText("(abc()" X "(def))"); + KEYS("vi(d", "(abc()(" X "))"); + KEYS("u", "(abc()(" X "def))"); + KEYS("", "(abc()(" X "))"); + KEYS("va(d", "(abc()" X ")"); + KEYS("u", "(abc()" X "())"); + KEYS("", "(abc()" X ")"); + // repeat change inner data.setText("(abc)" N "def" N "(ghi)"); KEYS("ci(xyz", "(xy" X "z)" N "def" N "(ghi)"); diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 4a9b04b389a..0da53b67afe 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -6768,6 +6768,9 @@ bool FakeVimHandler::Private::selectBlockTextObject(bool inner, p2 -= sright.size() - 2; } + if (isVisualMode()) + --p2; + setAnchorAndPosition(p1, p2); m_movetype = MoveExclusive;