diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp index afdb42c4ca3153722b32933ee7850d51042cb1c4..6f11f439de32ea8969548ff9c7465f106ae60ef7 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("<c-r>", "(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<esc>", "(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("<c-r>", "\"" 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 ac0ad4e244b7d46eeed085db69b82b1e2a82d99d..5aa50f4c86afa8bb3f3da1871d9810003f16bb49 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;