From 5af00873cf69ce2ba1a750c80e1a20b24e306680 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 31 Jan 2022 07:42:30 +0100 Subject: FakeVim: Support backslashes in substitute command patterns Change-Id: Ibfcea7fdc550082e4975e1fc4d2fba6563dbfd02 Done-by: Jochen Baier Fixes: QTCREATORBUG-26955 Reviewed-by: Christian Stenger --- src/plugins/fakevim/fakevim_test.cpp | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src/plugins/fakevim/fakevim_test.cpp') diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp index f8b37bd814..07ab92c191 100644 --- a/src/plugins/fakevim/fakevim_test.cpp +++ b/src/plugins/fakevim/fakevim_test.cpp @@ -3029,6 +3029,50 @@ void FakeVimPlugin::test_vim_substitute() COMMAND("undo | s/\\(b...E\\)/\\U\\1/g", "aBC DEfGh"); COMMAND("undo | s/\\(C..E\\)/\\l\\1/g", "abc dEfGh"); COMMAND("undo | s/\\(b...E\\)/\\L\\1/g", "abc defGh"); + + // replace 1 backslash with 1 forward slash (separator: /) + data.setText(R"(abc\def)"); + COMMAND(R"(s/\\/\/)", X "abc/def"); + + // replace 1 backslash with X normal on line (separator: /) + data.setText(R"(abc\def\ghi)"); + COMMAND(R"(s/\\/X/g)", X "abcXdefXghi"); + + // replace 1 backslash with 1 forward slash on line (separator: /) + data.setText(R"(abc\def\ghi)"); + COMMAND(R"(s/\\/\//g)", X "abc/def/ghi"); + + // replace 1 backslash with 1 forward slash + data.setText(R"(abc\def)"); + COMMAND(R"(s#\\#/)", X "abc/def"); + + // replace 1 backslash with 1 forward slash on line + data.setText(R"(abc\def\ghi)"); + COMMAND(R"(s#\\#/#g)", X "abc/def/ghi"); + + // replace 2 backslash with 2 forward slash + data.setText(R"(abc\\def)"); + COMMAND(R"(s#\\\\#//)", X "abc//def"); + + // replace 2 backslash with 2 forward slash on line + data.setText(R"(abc\\def\\ghi)"); + COMMAND(R"(s#\\\\#//#g)", X "abc//def//ghi"); + + // replace 1 backslash with 1 forward slash last char + data.setText(R"(abc\)"); + COMMAND(R"(s#\\#/)", X "abc/"); + + // replace 1 backslash with 1 forward slash first char + data.setText(R"(\abc)"); + COMMAND(R"(s#\\#/)", X "/abc"); + + // replace 1 # with 2 # on line + data.setText(R"(abc#def#ghi)"); + COMMAND(R"(s#\##\#\##g)", X "abc##def##ghi"); + + // replace 2 # with 4 # on line + data.setText(R"(abc##def##ghi)"); + COMMAND(R"(s#\#\##\#\#\#\##g)", X "abc####def####ghi"); } void FakeVimPlugin::test_vim_ex_commandbuffer_paste() -- cgit v1.2.3