diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp index afdb42c4ca3..6f11f439de3 100644 --- a/src/plugins/fakevim/fakevim_test.cpp +++ b/src/plugins/fakevim/fakevim_test.cpp @@ -876,11 +876,26 @@ void FakeVimPlugin::test_vim_block_selection() KEYS("u", "(abc()" X "())"); KEYS("", "(abc()" X ")"); + data.setText("\"abc" X "\"\"def\""); + KEYS("vi\"d", "\"" X "\"\"def\""); + // repeat change inner data.setText("(abc)" N "def" N "(ghi)"); KEYS("ci(xyz", "(xy" X "z)" N "def" N "(ghi)"); KEYS("j.", "(xyz)" N "de" X "f" N "(ghi)"); KEYS("j.", "(xyz)" N "def" N "(xy" X "z)"); + + // quoted string + data.setText("\"abc" X "\"\"def\""); + KEYS("di\"", "\"" X "\"\"def\""); + KEYS("u", "\"" X "abc\"\"def\""); + KEYS("", "\"" X "\"\"def\""); + + NOT_IMPLEMENTED + // quoted string with escaped character + data.setText("\"abc\""); + KEYS("di\"", "\"abc\"\"" X "\""); + KEYS("u", "\"abc\"\"" X "def\""); } void FakeVimPlugin::test_vim_repeat() diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index ac0ad4e244b..5aa50f4c86a 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -6868,6 +6868,9 @@ bool FakeVimHandler::Private::selectQuotedStringTextObject(bool inner, p2 -= sz - 1; } + if (isVisualMode()) + --p2; + setAnchorAndPosition(p1, p2); m_movetype = MoveExclusive;