diff --git a/test/compose/backward-search/state b/test/compose/backward-search/kak_quoted_selections_desc
similarity index 100%
rename from test/compose/backward-search/state
rename to test/compose/backward-search/kak_quoted_selections_desc
diff --git a/test/compose/complex-pipe/selections b/test/compose/complex-pipe/kak_quoted_selections
similarity index 100%
rename from test/compose/complex-pipe/selections
rename to test/compose/complex-pipe/kak_quoted_selections
diff --git a/test/compose/select-timestamp/selections b/test/compose/select-timestamp/kak_quoted_selections
similarity index 100%
rename from test/compose/select-timestamp/selections
rename to test/compose/select-timestamp/kak_quoted_selections
diff --git a/test/compose/undo-multi-replace-at-end/selections b/test/compose/undo-multi-replace-at-end/kak_quoted_selections
similarity index 100%
rename from test/compose/undo-multi-replace-at-end/selections
rename to test/compose/undo-multi-replace-at-end/kak_quoted_selections
diff --git a/test/display/horizontal-scroll-onto-tab/script b/test/display/horizontal-scroll-onto-tab/script
new file mode 100644
index 00000000..11c5c294
--- /dev/null
+++ b/test/display/horizontal-scroll-onto-tab/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "90123456789012345678901234567890123456789012345678901234567890123456789012345678" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "90123456789012345678901234567890123456789012345678901234567890123456" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": " " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "90" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "7890\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 2:78 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 1, "column": 72 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/display/horizontal-scroll-onto-tab/ui-out b/test/display/horizontal-scroll-onto-tab/ui-out
deleted file mode 100644
index ecb7e3ae..00000000
--- a/test/display/horizontal-scroll-onto-tab/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "90123456789012345678901234567890123456789012345678901234567890123456789012345678" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "90123456789012345678901234567890123456789012345678901234567890123456" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": " " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "90" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "7890\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 2:78 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 1, "column": 72 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/display/horizontal-scroll-with-tab/script b/test/display/horizontal-scroll-with-tab/script
new file mode 100644
index 00000000..20f7ed0a
--- /dev/null
+++ b/test/display/horizontal-scroll-with-tab/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1234567890123456789012345678901234567890123456789012345678901234567890123456789" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "7890\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:90 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 79 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/display/horizontal-scroll-with-tab/ui-out b/test/display/horizontal-scroll-with-tab/ui-out
deleted file mode 100644
index 325bd420..00000000
--- a/test/display/horizontal-scroll-with-tab/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1234567890123456789012345678901234567890123456789012345678901234567890123456789" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "7890\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:90 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 79 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/display/horizontal-scroll/script b/test/display/horizontal-scroll/script
new file mode 100644
index 00000000..7bcdb131
--- /dev/null
+++ b/test/display/horizontal-scroll/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "x" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "xxxxxxxxxx\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:90 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 79 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/display/horizontal-scroll/ui-out b/test/display/horizontal-scroll/ui-out
deleted file mode 100644
index d6c5c96d..00000000
--- a/test/display/horizontal-scroll/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "x" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "xxxxxxxxxx\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:90 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 79 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/display/vertical-scroll/script b/test/display/vertical-scroll/script
new file mode 100644
index 00000000..6eed6f55
--- /dev/null
+++ b/test/display/vertical-scroll/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "07\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "08\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "09\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "10\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "11\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "12\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "13\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "14\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "15\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "16\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "17\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "18\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "19\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "20\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "21\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "22\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "23\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "24\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "25\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "26\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "27\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "28\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "29\u000a" }], [{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "3" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "0\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 30:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 23, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/display/vertical-scroll/ui-out b/test/display/vertical-scroll/ui-out
deleted file mode 100644
index 20bc1bd3..00000000
--- a/test/display/vertical-scroll/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "07\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "08\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "09\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "10\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "11\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "12\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "13\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "14\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "15\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "16\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "17\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "18\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "19\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "20\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "21\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "22\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "23\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "24\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "25\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "26\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "27\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "28\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "29\u000a" }], [{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "3" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "0\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 30:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 23, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/highlight/column/multi-columns/script b/test/highlight/column/multi-columns/script
new file mode 100644
index 00000000..fe2ffc95
--- /dev/null
+++ b/test/highlight/column/multi-columns/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1│" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "a" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }, { "face": { "fg": "default", "bg": "red", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "green", "attributes": [] }, "contents": " " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "2│" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "red", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": "a" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "b" }, { "face": { "fg": "default", "bg": "green", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "3│" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "ab" }, { "face": { "fg": "default", "bg": "red", "attributes": [] }, "contents": "c" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "green", "attributes": [] }, "contents": " " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "4│" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "ab" }, { "face": { "fg": "default", "bg": "red", "attributes": [] }, "contents": "c" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "d" }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": "\u000a" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "green", "attributes": [] }, "contents": " " }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 2 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/highlight/column/multi-columns/ui-out b/test/highlight/column/multi-columns/ui-out
deleted file mode 100644
index da16c227..00000000
--- a/test/highlight/column/multi-columns/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1│" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "a" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }, { "face": { "fg": "default", "bg": "red", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "green", "attributes": [] }, "contents": " " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "2│" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "red", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": "a" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "b" }, { "face": { "fg": "default", "bg": "green", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "3│" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "ab" }, { "face": { "fg": "default", "bg": "red", "attributes": [] }, "contents": "c" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "green", "attributes": [] }, "contents": " " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "4│" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "ab" }, { "face": { "fg": "default", "bg": "red", "attributes": [] }, "contents": "c" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "d" }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": "\u000a" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "green", "attributes": [] }, "contents": " " }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 2 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/highlight/face-override/script b/test/highlight/face-override/script
new file mode 100644
index 00000000..2354ba6a
--- /dev/null
+++ b/test/highlight/face-override/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": ["underline","italic"] }, "contents": "f" }, { "face": { "fg": "red", "bg": "blue", "attributes": ["underline","italic"] }, "contents": "oo" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/highlight/face-override/ui-out b/test/highlight/face-override/ui-out
deleted file mode 100644
index 8b40e862..00000000
--- a/test/highlight/face-override/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": ["underline","italic"] }, "contents": "f" }, { "face": { "fg": "red", "bg": "blue", "attributes": ["underline","italic"] }, "contents": "oo" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/highlight/named-captures/script b/test/highlight/named-captures/script
new file mode 100644
index 00000000..90c6ab23
--- /dev/null
+++ b/test/highlight/named-captures/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "2" }, { "face": { "fg": "red", "bg": "default", "attributes": [] }, "contents": "018" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "-" }, { "face": { "fg": "green", "bg": "default", "attributes": [] }, "contents": "01" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "-" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": "03" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/highlight/named-captures/ui-out b/test/highlight/named-captures/ui-out
deleted file mode 100644
index 7350d79a..00000000
--- a/test/highlight/named-captures/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "2" }, { "face": { "fg": "red", "bg": "default", "attributes": [] }, "contents": "018" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "-" }, { "face": { "fg": "green", "bg": "default", "attributes": [] }, "contents": "01" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "-" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": "03" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/highlight/regions-recurse/script b/test/highlight/regions-recurse/script
new file mode 100644
index 00000000..e6fd37fe
--- /dev/null
+++ b/test/highlight/regions-recurse/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "f" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": "oo(" }, { "face": { "fg": "red", "bg": "default", "attributes": [] }, "contents": "bar '"'()'"'" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": ")\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/highlight/regions-recurse/ui-out b/test/highlight/regions-recurse/ui-out
deleted file mode 100644
index da7dd594..00000000
--- a/test/highlight/regions-recurse/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "f" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": "oo(" }, { "face": { "fg": "red", "bg": "default", "attributes": [] }, "contents": "bar '()'" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": ")\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/highlight/regions/script b/test/highlight/regions/script
new file mode 100644
index 00000000..839410bd
--- /dev/null
+++ b/test/highlight/regions/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "\"" }, { "face": { "fg": "green", "bg": "default", "attributes": [] }, "contents": "abcdefgh\"" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": " hehe " }, { "face": { "fg": "red", "bg": "default", "attributes": [] }, "contents": "${ youhou{hihi} }" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": " hehe\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/highlight/regions/ui-out b/test/highlight/regions/ui-out
deleted file mode 100644
index 48e7b3e9..00000000
--- a/test/highlight/regions/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "\"" }, { "face": { "fg": "green", "bg": "default", "attributes": [] }, "contents": "abcdefgh\"" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": " hehe " }, { "face": { "fg": "red", "bg": "default", "attributes": [] }, "contents": "${ youhou{hihi} }" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "" }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": " hehe\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/highlight/wrap/avoid-odd-places/script b/test/highlight/wrap/avoid-odd-places/script
new file mode 100644
index 00000000..c7721616
--- /dev/null
+++ b/test/highlight/wrap/avoid-odd-places/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "T" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "his is a long paragraph where we will see if the wrap highlighter tries to " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\"Wrap\" between the quotes and the word.\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/highlight/wrap/avoid-odd-places/ui-out b/test/highlight/wrap/avoid-odd-places/ui-out
deleted file mode 100644
index 07828938..00000000
--- a/test/highlight/wrap/avoid-odd-places/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "T" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "his is a long paragraph where we will see if the wrap highlighter tries to " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\"Wrap\" between the quotes and the word.\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/indent/c-family/indent-if-brace/state b/test/indent/c-family/indent-if-brace/kak_quoted_selections_desc
similarity index 100%
rename from test/indent/c-family/indent-if-brace/state
rename to test/indent/c-family/indent-if-brace/kak_quoted_selections_desc
diff --git a/test/normal/all/selections b/test/normal/all/kak_quoted_selections
similarity index 100%
rename from test/normal/all/selections
rename to test/normal/all/kak_quoted_selections
diff --git a/test/normal/append/selections b/test/normal/append/kak_quoted_selections
similarity index 100%
rename from test/normal/append/selections
rename to test/normal/append/kak_quoted_selections
diff --git a/test/normal/clear-selections/selections b/test/normal/clear-selections/kak_quoted_selections
similarity index 100%
rename from test/normal/clear-selections/selections
rename to test/normal/clear-selections/kak_quoted_selections
diff --git a/test/normal/codepoint-width/tab-width/selections b/test/normal/codepoint-width/tab-width/kak_quoted_selections
similarity index 100%
rename from test/normal/codepoint-width/tab-width/selections
rename to test/normal/codepoint-width/tab-width/kak_quoted_selections
diff --git a/test/normal/codepoint-width/vertical-movement/selections b/test/normal/codepoint-width/vertical-movement/kak_quoted_selections
similarity index 100%
rename from test/normal/codepoint-width/vertical-movement/selections
rename to test/normal/codepoint-width/vertical-movement/kak_quoted_selections
diff --git a/test/normal/concat-paste-line/state b/test/normal/concat-paste-line/kak_quoted_selections_desc
similarity index 100%
rename from test/normal/concat-paste-line/state
rename to test/normal/concat-paste-line/kak_quoted_selections_desc
diff --git a/test/normal/copy-sel-above/selections b/test/normal/copy-sel-above/kak_quoted_selections
similarity index 100%
rename from test/normal/copy-sel-above/selections
rename to test/normal/copy-sel-above/kak_quoted_selections
diff --git a/test/normal/copy-sel-below-multi-line/selections b/test/normal/copy-sel-below-multi-line/kak_quoted_selections
similarity index 100%
rename from test/normal/copy-sel-below-multi-line/selections
rename to test/normal/copy-sel-below-multi-line/kak_quoted_selections
diff --git a/test/normal/copy-sel-below/selections b/test/normal/copy-sel-below/kak_quoted_selections
similarity index 100%
rename from test/normal/copy-sel-below/selections
rename to test/normal/copy-sel-below/kak_quoted_selections
diff --git a/test/normal/extend-lines/selections b/test/normal/extend-lines/kak_quoted_selections
similarity index 100%
rename from test/normal/extend-lines/selections
rename to test/normal/extend-lines/kak_quoted_selections
diff --git a/test/normal/extra-word-chars/selections b/test/normal/extra-word-chars/kak_quoted_selections
similarity index 100%
rename from test/normal/extra-word-chars/selections
rename to test/normal/extra-word-chars/kak_quoted_selections
diff --git a/test/normal/find-char-backward-extending/selections b/test/normal/find-char-backward-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/find-char-backward-extending/selections
rename to test/normal/find-char-backward-extending/kak_quoted_selections
diff --git a/test/normal/find-char-backward/selections b/test/normal/find-char-backward/kak_quoted_selections
similarity index 100%
rename from test/normal/find-char-backward/selections
rename to test/normal/find-char-backward/kak_quoted_selections
diff --git a/test/normal/find-char-forward-extending/selections b/test/normal/find-char-forward-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/find-char-forward-extending/selections
rename to test/normal/find-char-forward-extending/kak_quoted_selections
diff --git a/test/normal/find-char-forward/selections b/test/normal/find-char-forward/kak_quoted_selections
similarity index 100%
rename from test/normal/find-char-forward/selections
rename to test/normal/find-char-forward/kak_quoted_selections
diff --git a/test/normal/goto-extending/buffer-bottom/selections b/test/normal/goto-extending/buffer-bottom/kak_quoted_selections
similarity index 100%
rename from test/normal/goto-extending/buffer-bottom/selections
rename to test/normal/goto-extending/buffer-bottom/kak_quoted_selections
diff --git a/test/normal/goto-extending/buffer-end/selections b/test/normal/goto-extending/buffer-end/kak_quoted_selections
similarity index 100%
rename from test/normal/goto-extending/buffer-end/selections
rename to test/normal/goto-extending/buffer-end/kak_quoted_selections
diff --git a/test/normal/goto-extending/buffer-top/selections b/test/normal/goto-extending/buffer-top/kak_quoted_selections
similarity index 100%
rename from test/normal/goto-extending/buffer-top/selections
rename to test/normal/goto-extending/buffer-top/kak_quoted_selections
diff --git a/test/normal/goto-extending/last-change/selections b/test/normal/goto-extending/last-change/kak_quoted_selections
similarity index 100%
rename from test/normal/goto-extending/last-change/selections
rename to test/normal/goto-extending/last-change/kak_quoted_selections
diff --git a/test/normal/goto-extending/line-begin/selections b/test/normal/goto-extending/line-begin/kak_quoted_selections
similarity index 100%
rename from test/normal/goto-extending/line-begin/selections
rename to test/normal/goto-extending/line-begin/kak_quoted_selections
diff --git a/test/normal/goto-extending/line-end/selections b/test/normal/goto-extending/line-end/kak_quoted_selections
similarity index 100%
rename from test/normal/goto-extending/line-end/selections
rename to test/normal/goto-extending/line-end/kak_quoted_selections
diff --git a/test/normal/goto/buffer-bottom/selections b/test/normal/goto/buffer-bottom/kak_quoted_selections
similarity index 100%
rename from test/normal/goto/buffer-bottom/selections
rename to test/normal/goto/buffer-bottom/kak_quoted_selections
diff --git a/test/normal/goto/buffer-end/selections b/test/normal/goto/buffer-end/kak_quoted_selections
similarity index 100%
rename from test/normal/goto/buffer-end/selections
rename to test/normal/goto/buffer-end/kak_quoted_selections
diff --git a/test/normal/goto/buffer-top/selections b/test/normal/goto/buffer-top/kak_quoted_selections
similarity index 100%
rename from test/normal/goto/buffer-top/selections
rename to test/normal/goto/buffer-top/kak_quoted_selections
diff --git a/test/normal/goto/last-change/selections b/test/normal/goto/last-change/kak_quoted_selections
similarity index 100%
rename from test/normal/goto/last-change/selections
rename to test/normal/goto/last-change/kak_quoted_selections
diff --git a/test/normal/goto/line-begin/selections b/test/normal/goto/line-begin/kak_quoted_selections
similarity index 100%
rename from test/normal/goto/line-begin/selections
rename to test/normal/goto/line-begin/kak_quoted_selections
diff --git a/test/normal/goto/line-end/selections b/test/normal/goto/line-end/kak_quoted_selections
similarity index 100%
rename from test/normal/goto/line-end/selections
rename to test/normal/goto/line-end/kak_quoted_selections
diff --git a/test/normal/keep-cmd/selections b/test/normal/keep-cmd/kak_quoted_selections
similarity index 100%
rename from test/normal/keep-cmd/selections
rename to test/normal/keep-cmd/kak_quoted_selections
diff --git a/test/normal/lower-case/selections b/test/normal/lower-case/kak_quoted_selections
similarity index 100%
rename from test/normal/lower-case/selections
rename to test/normal/lower-case/kak_quoted_selections
diff --git a/test/normal/match-char/selections b/test/normal/match-char/kak_quoted_selections
similarity index 100%
rename from test/normal/match-char/selections
rename to test/normal/match-char/kak_quoted_selections
diff --git a/test/normal/move/down-extending/selections b/test/normal/move/down-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/move/down-extending/selections
rename to test/normal/move/down-extending/kak_quoted_selections
diff --git a/test/normal/move/down/selections b/test/normal/move/down/kak_quoted_selections
similarity index 100%
rename from test/normal/move/down/selections
rename to test/normal/move/down/kak_quoted_selections
diff --git a/test/normal/move/left-extending/selections b/test/normal/move/left-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/move/left-extending/selections
rename to test/normal/move/left-extending/kak_quoted_selections
diff --git a/test/normal/move/left/selections b/test/normal/move/left/kak_quoted_selections
similarity index 100%
rename from test/normal/move/left/selections
rename to test/normal/move/left/kak_quoted_selections
diff --git a/test/normal/move/right-extending/selections b/test/normal/move/right-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/move/right-extending/selections
rename to test/normal/move/right-extending/kak_quoted_selections
diff --git a/test/normal/move/right/selections b/test/normal/move/right/kak_quoted_selections
similarity index 100%
rename from test/normal/move/right/selections
rename to test/normal/move/right/kak_quoted_selections
diff --git a/test/normal/move/up-extending/selections b/test/normal/move/up-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/move/up-extending/selections
rename to test/normal/move/up-extending/kak_quoted_selections
diff --git a/test/normal/move/up/selections b/test/normal/move/up/kak_quoted_selections
similarity index 100%
rename from test/normal/move/up/selections
rename to test/normal/move/up/kak_quoted_selections
diff --git a/test/normal/next-big-word-extending/selections b/test/normal/next-big-word-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/next-big-word-extending/selections
rename to test/normal/next-big-word-extending/kak_quoted_selections
diff --git a/test/normal/next-big-word/selections b/test/normal/next-big-word/kak_quoted_selections
similarity index 100%
rename from test/normal/next-big-word/selections
rename to test/normal/next-big-word/kak_quoted_selections
diff --git a/test/normal/next-match-appending/selections b/test/normal/next-match-appending/kak_quoted_selections
similarity index 100%
rename from test/normal/next-match-appending/selections
rename to test/normal/next-match-appending/kak_quoted_selections
diff --git a/test/normal/next-match/selections b/test/normal/next-match/kak_quoted_selections
similarity index 100%
rename from test/normal/next-match/selections
rename to test/normal/next-match/kak_quoted_selections
diff --git a/test/normal/next-word-extending/selections b/test/normal/next-word-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/next-word-extending/selections
rename to test/normal/next-word-extending/kak_quoted_selections
diff --git a/test/normal/next-word/selections b/test/normal/next-word/kak_quoted_selections
similarity index 100%
rename from test/normal/next-word/selections
rename to test/normal/next-word/kak_quoted_selections
diff --git a/test/normal/object/around-parent/angle/selections b/test/normal/object/around-parent/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around-parent/angle/selections
rename to test/normal/object/around-parent/angle/kak_quoted_selections
diff --git a/test/normal/object/around-parent/braces/selections b/test/normal/object/around-parent/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around-parent/braces/selections
rename to test/normal/object/around-parent/braces/kak_quoted_selections
diff --git a/test/normal/object/around-parent/brackets/selections b/test/normal/object/around-parent/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around-parent/brackets/selections
rename to test/normal/object/around-parent/brackets/kak_quoted_selections
diff --git a/test/normal/object/around-parent/parenthesis/selections b/test/normal/object/around-parent/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around-parent/parenthesis/selections
rename to test/normal/object/around-parent/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/around/angle/selections b/test/normal/object/around/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/angle/selections
rename to test/normal/object/around/angle/kak_quoted_selections
diff --git a/test/normal/object/around/argument/multi-level/selections b/test/normal/object/around/argument/multi-level/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/argument/multi-level/selections
rename to test/normal/object/around/argument/multi-level/kak_quoted_selections
diff --git a/test/normal/object/around/argument/single-level/selections b/test/normal/object/around/argument/single-level/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/argument/single-level/selections
rename to test/normal/object/around/argument/single-level/kak_quoted_selections
diff --git a/test/normal/object/around/big-word/selections b/test/normal/object/around/big-word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/big-word/selections
rename to test/normal/object/around/big-word/kak_quoted_selections
diff --git a/test/normal/object/around/braces/selections b/test/normal/object/around/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/braces/selections
rename to test/normal/object/around/braces/kak_quoted_selections
diff --git a/test/normal/object/around/brackets/selections b/test/normal/object/around/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/brackets/selections
rename to test/normal/object/around/brackets/kak_quoted_selections
diff --git a/test/normal/object/around/double_quote/selections b/test/normal/object/around/double_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/double_quote/selections
rename to test/normal/object/around/double_quote/kak_quoted_selections
diff --git a/test/normal/object/around/grave_quote/selections b/test/normal/object/around/grave_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/grave_quote/selections
rename to test/normal/object/around/grave_quote/kak_quoted_selections
diff --git a/test/normal/object/around/indent/selections b/test/normal/object/around/indent/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/indent/selections
rename to test/normal/object/around/indent/kak_quoted_selections
diff --git a/test/normal/object/around/paragraph/selections b/test/normal/object/around/paragraph/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/paragraph/selections
rename to test/normal/object/around/paragraph/kak_quoted_selections
diff --git a/test/normal/object/around/parenthesis/selections b/test/normal/object/around/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/parenthesis/selections
rename to test/normal/object/around/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/around/sentence/selections b/test/normal/object/around/sentence/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/sentence/selections
rename to test/normal/object/around/sentence/kak_quoted_selections
diff --git a/test/normal/object/around/single_quote/selections b/test/normal/object/around/single_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/single_quote/selections
rename to test/normal/object/around/single_quote/kak_quoted_selections
diff --git a/test/normal/object/around/slash/selections b/test/normal/object/around/slash/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/slash/selections
rename to test/normal/object/around/slash/kak_quoted_selections
diff --git a/test/normal/object/around/word/selections b/test/normal/object/around/word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/around/word/selections
rename to test/normal/object/around/word/kak_quoted_selections
diff --git a/test/normal/object/drop-non-whitespace/selections b/test/normal/object/drop-non-whitespace/kak_quoted_selections
similarity index 100%
rename from test/normal/object/drop-non-whitespace/selections
rename to test/normal/object/drop-non-whitespace/kak_quoted_selections
diff --git a/test/normal/object/end-extending-parent/braces/selections b/test/normal/object/end-extending-parent/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending-parent/braces/selections
rename to test/normal/object/end-extending-parent/braces/kak_quoted_selections
diff --git a/test/normal/object/end-extending/angle/selections b/test/normal/object/end-extending/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/angle/selections
rename to test/normal/object/end-extending/angle/kak_quoted_selections
diff --git a/test/normal/object/end-extending/argument/selections b/test/normal/object/end-extending/argument/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/argument/selections
rename to test/normal/object/end-extending/argument/kak_quoted_selections
diff --git a/test/normal/object/end-extending/big-word/selections b/test/normal/object/end-extending/big-word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/big-word/selections
rename to test/normal/object/end-extending/big-word/kak_quoted_selections
diff --git a/test/normal/object/end-extending/braces/selections b/test/normal/object/end-extending/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/braces/selections
rename to test/normal/object/end-extending/braces/kak_quoted_selections
diff --git a/test/normal/object/end-extending/brackets/selections b/test/normal/object/end-extending/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/brackets/selections
rename to test/normal/object/end-extending/brackets/kak_quoted_selections
diff --git a/test/normal/object/end-extending/double_quote/selections b/test/normal/object/end-extending/double_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/double_quote/selections
rename to test/normal/object/end-extending/double_quote/kak_quoted_selections
diff --git a/test/normal/object/end-extending/grave_quote/selections b/test/normal/object/end-extending/grave_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/grave_quote/selections
rename to test/normal/object/end-extending/grave_quote/kak_quoted_selections
diff --git a/test/normal/object/end-extending/indent/selections b/test/normal/object/end-extending/indent/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/indent/selections
rename to test/normal/object/end-extending/indent/kak_quoted_selections
diff --git a/test/normal/object/end-extending/paragraph/selections b/test/normal/object/end-extending/paragraph/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/paragraph/selections
rename to test/normal/object/end-extending/paragraph/kak_quoted_selections
diff --git a/test/normal/object/end-extending/parenthesis/selections b/test/normal/object/end-extending/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/parenthesis/selections
rename to test/normal/object/end-extending/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/end-extending/sentence/selections b/test/normal/object/end-extending/sentence/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/sentence/selections
rename to test/normal/object/end-extending/sentence/kak_quoted_selections
diff --git a/test/normal/object/end-extending/single_quote/selections b/test/normal/object/end-extending/single_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/single_quote/selections
rename to test/normal/object/end-extending/single_quote/kak_quoted_selections
diff --git a/test/normal/object/end-extending/word/selections b/test/normal/object/end-extending/word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end-extending/word/selections
rename to test/normal/object/end-extending/word/kak_quoted_selections
diff --git a/test/normal/object/end/angle/selections b/test/normal/object/end/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/angle/selections
rename to test/normal/object/end/angle/kak_quoted_selections
diff --git a/test/normal/object/end/argument/selections b/test/normal/object/end/argument/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/argument/selections
rename to test/normal/object/end/argument/kak_quoted_selections
diff --git a/test/normal/object/end/big-word/selections b/test/normal/object/end/big-word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/big-word/selections
rename to test/normal/object/end/big-word/kak_quoted_selections
diff --git a/test/normal/object/end/braces/selections b/test/normal/object/end/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/braces/selections
rename to test/normal/object/end/braces/kak_quoted_selections
diff --git a/test/normal/object/end/brackets/selections b/test/normal/object/end/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/brackets/selections
rename to test/normal/object/end/brackets/kak_quoted_selections
diff --git a/test/normal/object/end/double_quote/selections b/test/normal/object/end/double_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/double_quote/selections
rename to test/normal/object/end/double_quote/kak_quoted_selections
diff --git a/test/normal/object/end/grave_quote/selections b/test/normal/object/end/grave_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/grave_quote/selections
rename to test/normal/object/end/grave_quote/kak_quoted_selections
diff --git a/test/normal/object/end/indent/selections b/test/normal/object/end/indent/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/indent/selections
rename to test/normal/object/end/indent/kak_quoted_selections
diff --git a/test/normal/object/end/paragraph/selections b/test/normal/object/end/paragraph/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/paragraph/selections
rename to test/normal/object/end/paragraph/kak_quoted_selections
diff --git a/test/normal/object/end/parenthesis/selections b/test/normal/object/end/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/parenthesis/selections
rename to test/normal/object/end/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/end/sentence/selections b/test/normal/object/end/sentence/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/sentence/selections
rename to test/normal/object/end/sentence/kak_quoted_selections
diff --git a/test/normal/object/end/single_quote/selections b/test/normal/object/end/single_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/single_quote/selections
rename to test/normal/object/end/single_quote/kak_quoted_selections
diff --git a/test/normal/object/end/word/selections b/test/normal/object/end/word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/end/word/selections
rename to test/normal/object/end/word/kak_quoted_selections
diff --git a/test/normal/object/inner/angle/selections b/test/normal/object/inner/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/angle/selections
rename to test/normal/object/inner/angle/kak_quoted_selections
diff --git a/test/normal/object/inner/argument/multi-level/selections b/test/normal/object/inner/argument/multi-level/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/argument/multi-level/selections
rename to test/normal/object/inner/argument/multi-level/kak_quoted_selections
diff --git a/test/normal/object/inner/argument/single-level/selections b/test/normal/object/inner/argument/single-level/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/argument/single-level/selections
rename to test/normal/object/inner/argument/single-level/kak_quoted_selections
diff --git a/test/normal/object/inner/big-word/selections b/test/normal/object/inner/big-word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/big-word/selections
rename to test/normal/object/inner/big-word/kak_quoted_selections
diff --git a/test/normal/object/inner/braces/selections b/test/normal/object/inner/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/braces/selections
rename to test/normal/object/inner/braces/kak_quoted_selections
diff --git a/test/normal/object/inner/brackets/selections b/test/normal/object/inner/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/brackets/selections
rename to test/normal/object/inner/brackets/kak_quoted_selections
diff --git a/test/normal/object/inner/double_quote/selections b/test/normal/object/inner/double_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/double_quote/selections
rename to test/normal/object/inner/double_quote/kak_quoted_selections
diff --git a/test/normal/object/inner/grave_quote/selections b/test/normal/object/inner/grave_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/grave_quote/selections
rename to test/normal/object/inner/grave_quote/kak_quoted_selections
diff --git a/test/normal/object/inner/indent/selections b/test/normal/object/inner/indent/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/indent/selections
rename to test/normal/object/inner/indent/kak_quoted_selections
diff --git a/test/normal/object/inner/paragraph/selections b/test/normal/object/inner/paragraph/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/paragraph/selections
rename to test/normal/object/inner/paragraph/kak_quoted_selections
diff --git a/test/normal/object/inner/parenthesis/selections b/test/normal/object/inner/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/parenthesis/selections
rename to test/normal/object/inner/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/inner/sentence/selections b/test/normal/object/inner/sentence/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/sentence/selections
rename to test/normal/object/inner/sentence/kak_quoted_selections
diff --git a/test/normal/object/inner/single_quote/selections b/test/normal/object/inner/single_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/single_quote/selections
rename to test/normal/object/inner/single_quote/kak_quoted_selections
diff --git a/test/normal/object/inner/slash/selections b/test/normal/object/inner/slash/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/slash/selections
rename to test/normal/object/inner/slash/kak_quoted_selections
diff --git a/test/normal/object/inner/word/selections b/test/normal/object/inner/word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/inner/word/selections
rename to test/normal/object/inner/word/kak_quoted_selections
diff --git a/test/normal/object/on-end/around/angle/selections b/test/normal/object/on-end/around/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/around/angle/selections
rename to test/normal/object/on-end/around/angle/kak_quoted_selections
diff --git a/test/normal/object/on-end/around/braces/selections b/test/normal/object/on-end/around/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/around/braces/selections
rename to test/normal/object/on-end/around/braces/kak_quoted_selections
diff --git a/test/normal/object/on-end/around/brackets/selections b/test/normal/object/on-end/around/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/around/brackets/selections
rename to test/normal/object/on-end/around/brackets/kak_quoted_selections
diff --git a/test/normal/object/on-end/around/parenthesis/selections b/test/normal/object/on-end/around/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/around/parenthesis/selections
rename to test/normal/object/on-end/around/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/on-end/inner/angle/selections b/test/normal/object/on-end/inner/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/inner/angle/selections
rename to test/normal/object/on-end/inner/angle/kak_quoted_selections
diff --git a/test/normal/object/on-end/inner/braces/selections b/test/normal/object/on-end/inner/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/inner/braces/selections
rename to test/normal/object/on-end/inner/braces/kak_quoted_selections
diff --git a/test/normal/object/on-end/inner/brackets/selections b/test/normal/object/on-end/inner/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/inner/brackets/selections
rename to test/normal/object/on-end/inner/brackets/kak_quoted_selections
diff --git a/test/normal/object/on-end/inner/parenthesis/selections b/test/normal/object/on-end/inner/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/inner/parenthesis/selections
rename to test/normal/object/on-end/inner/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/on-end/to-end/angle/selections b/test/normal/object/on-end/to-end/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/to-end/angle/selections
rename to test/normal/object/on-end/to-end/angle/kak_quoted_selections
diff --git a/test/normal/object/on-end/to-end/braces/selections b/test/normal/object/on-end/to-end/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/to-end/braces/selections
rename to test/normal/object/on-end/to-end/braces/kak_quoted_selections
diff --git a/test/normal/object/on-end/to-end/brackets/selections b/test/normal/object/on-end/to-end/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/to-end/brackets/selections
rename to test/normal/object/on-end/to-end/brackets/kak_quoted_selections
diff --git a/test/normal/object/on-end/to-end/parenthesis/selections b/test/normal/object/on-end/to-end/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-end/to-end/parenthesis/selections
rename to test/normal/object/on-end/to-end/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/on-start/around/angle/selections b/test/normal/object/on-start/around/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/around/angle/selections
rename to test/normal/object/on-start/around/angle/kak_quoted_selections
diff --git a/test/normal/object/on-start/around/braces/selections b/test/normal/object/on-start/around/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/around/braces/selections
rename to test/normal/object/on-start/around/braces/kak_quoted_selections
diff --git a/test/normal/object/on-start/around/brackets/selections b/test/normal/object/on-start/around/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/around/brackets/selections
rename to test/normal/object/on-start/around/brackets/kak_quoted_selections
diff --git a/test/normal/object/on-start/around/double_quote/selections b/test/normal/object/on-start/around/double_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/around/double_quote/selections
rename to test/normal/object/on-start/around/double_quote/kak_quoted_selections
diff --git a/test/normal/object/on-start/around/grave_quote/selections b/test/normal/object/on-start/around/grave_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/around/grave_quote/selections
rename to test/normal/object/on-start/around/grave_quote/kak_quoted_selections
diff --git a/test/normal/object/on-start/around/parenthesis/selections b/test/normal/object/on-start/around/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/around/parenthesis/selections
rename to test/normal/object/on-start/around/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/on-start/around/single_quote/selections b/test/normal/object/on-start/around/single_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/around/single_quote/selections
rename to test/normal/object/on-start/around/single_quote/kak_quoted_selections
diff --git a/test/normal/object/on-start/around/slash/selections b/test/normal/object/on-start/around/slash/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/around/slash/selections
rename to test/normal/object/on-start/around/slash/kak_quoted_selections
diff --git a/test/normal/object/on-start/inner/angle/selections b/test/normal/object/on-start/inner/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/inner/angle/selections
rename to test/normal/object/on-start/inner/angle/kak_quoted_selections
diff --git a/test/normal/object/on-start/inner/braces/selections b/test/normal/object/on-start/inner/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/inner/braces/selections
rename to test/normal/object/on-start/inner/braces/kak_quoted_selections
diff --git a/test/normal/object/on-start/inner/brackets/selections b/test/normal/object/on-start/inner/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/inner/brackets/selections
rename to test/normal/object/on-start/inner/brackets/kak_quoted_selections
diff --git a/test/normal/object/on-start/inner/double_quote/selections b/test/normal/object/on-start/inner/double_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/inner/double_quote/selections
rename to test/normal/object/on-start/inner/double_quote/kak_quoted_selections
diff --git a/test/normal/object/on-start/inner/grave_quote/selections b/test/normal/object/on-start/inner/grave_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/inner/grave_quote/selections
rename to test/normal/object/on-start/inner/grave_quote/kak_quoted_selections
diff --git a/test/normal/object/on-start/inner/parenthesis/selections b/test/normal/object/on-start/inner/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/inner/parenthesis/selections
rename to test/normal/object/on-start/inner/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/on-start/inner/single_quote/selections b/test/normal/object/on-start/inner/single_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/inner/single_quote/selections
rename to test/normal/object/on-start/inner/single_quote/kak_quoted_selections
diff --git a/test/normal/object/on-start/to-start/angle/selections b/test/normal/object/on-start/to-start/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/to-start/angle/selections
rename to test/normal/object/on-start/to-start/angle/kak_quoted_selections
diff --git a/test/normal/object/on-start/to-start/braces/selections b/test/normal/object/on-start/to-start/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/to-start/braces/selections
rename to test/normal/object/on-start/to-start/braces/kak_quoted_selections
diff --git a/test/normal/object/on-start/to-start/brackets/selections b/test/normal/object/on-start/to-start/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/to-start/brackets/selections
rename to test/normal/object/on-start/to-start/brackets/kak_quoted_selections
diff --git a/test/normal/object/on-start/to-start/parenthesis/selections b/test/normal/object/on-start/to-start/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/on-start/to-start/parenthesis/selections
rename to test/normal/object/on-start/to-start/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/start-extending/angle/selections b/test/normal/object/start-extending/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/angle/selections
rename to test/normal/object/start-extending/angle/kak_quoted_selections
diff --git a/test/normal/object/start-extending/argument/selections b/test/normal/object/start-extending/argument/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/argument/selections
rename to test/normal/object/start-extending/argument/kak_quoted_selections
diff --git a/test/normal/object/start-extending/big-word/selections b/test/normal/object/start-extending/big-word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/big-word/selections
rename to test/normal/object/start-extending/big-word/kak_quoted_selections
diff --git a/test/normal/object/start-extending/braces/selections b/test/normal/object/start-extending/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/braces/selections
rename to test/normal/object/start-extending/braces/kak_quoted_selections
diff --git a/test/normal/object/start-extending/brackets/selections b/test/normal/object/start-extending/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/brackets/selections
rename to test/normal/object/start-extending/brackets/kak_quoted_selections
diff --git a/test/normal/object/start-extending/double_quote/selections b/test/normal/object/start-extending/double_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/double_quote/selections
rename to test/normal/object/start-extending/double_quote/kak_quoted_selections
diff --git a/test/normal/object/start-extending/grave_quote/selections b/test/normal/object/start-extending/grave_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/grave_quote/selections
rename to test/normal/object/start-extending/grave_quote/kak_quoted_selections
diff --git a/test/normal/object/start-extending/indent/selections b/test/normal/object/start-extending/indent/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/indent/selections
rename to test/normal/object/start-extending/indent/kak_quoted_selections
diff --git a/test/normal/object/start-extending/paragraph/selections b/test/normal/object/start-extending/paragraph/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/paragraph/selections
rename to test/normal/object/start-extending/paragraph/kak_quoted_selections
diff --git a/test/normal/object/start-extending/parenthesis/selections b/test/normal/object/start-extending/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/parenthesis/selections
rename to test/normal/object/start-extending/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/start-extending/sentence/selections b/test/normal/object/start-extending/sentence/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/sentence/selections
rename to test/normal/object/start-extending/sentence/kak_quoted_selections
diff --git a/test/normal/object/start-extending/single_quote/selections b/test/normal/object/start-extending/single_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/single_quote/selections
rename to test/normal/object/start-extending/single_quote/kak_quoted_selections
diff --git a/test/normal/object/start-extending/word/selections b/test/normal/object/start-extending/word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start-extending/word/selections
rename to test/normal/object/start-extending/word/kak_quoted_selections
diff --git a/test/normal/object/start/angle/selections b/test/normal/object/start/angle/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/angle/selections
rename to test/normal/object/start/angle/kak_quoted_selections
diff --git a/test/normal/object/start/argument/selections b/test/normal/object/start/argument/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/argument/selections
rename to test/normal/object/start/argument/kak_quoted_selections
diff --git a/test/normal/object/start/big-word/selections b/test/normal/object/start/big-word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/big-word/selections
rename to test/normal/object/start/big-word/kak_quoted_selections
diff --git a/test/normal/object/start/braces/selections b/test/normal/object/start/braces/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/braces/selections
rename to test/normal/object/start/braces/kak_quoted_selections
diff --git a/test/normal/object/start/brackets/selections b/test/normal/object/start/brackets/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/brackets/selections
rename to test/normal/object/start/brackets/kak_quoted_selections
diff --git a/test/normal/object/start/double_quote/selections b/test/normal/object/start/double_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/double_quote/selections
rename to test/normal/object/start/double_quote/kak_quoted_selections
diff --git a/test/normal/object/start/grave_quote/selections b/test/normal/object/start/grave_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/grave_quote/selections
rename to test/normal/object/start/grave_quote/kak_quoted_selections
diff --git a/test/normal/object/start/indent/selections b/test/normal/object/start/indent/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/indent/selections
rename to test/normal/object/start/indent/kak_quoted_selections
diff --git a/test/normal/object/start/paragraph/selections b/test/normal/object/start/paragraph/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/paragraph/selections
rename to test/normal/object/start/paragraph/kak_quoted_selections
diff --git a/test/normal/object/start/parenthesis/selections b/test/normal/object/start/parenthesis/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/parenthesis/selections
rename to test/normal/object/start/parenthesis/kak_quoted_selections
diff --git a/test/normal/object/start/sentence/selections b/test/normal/object/start/sentence/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/sentence/selections
rename to test/normal/object/start/sentence/kak_quoted_selections
diff --git a/test/normal/object/start/single_quote/selections b/test/normal/object/start/single_quote/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/single_quote/selections
rename to test/normal/object/start/single_quote/kak_quoted_selections
diff --git a/test/normal/object/start/word/selections b/test/normal/object/start/word/kak_quoted_selections
similarity index 100%
rename from test/normal/object/start/word/selections
rename to test/normal/object/start/word/kak_quoted_selections
diff --git a/test/normal/previous-big-word-extending/selections b/test/normal/previous-big-word-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/previous-big-word-extending/selections
rename to test/normal/previous-big-word-extending/kak_quoted_selections
diff --git a/test/normal/previous-big-word/selections b/test/normal/previous-big-word/kak_quoted_selections
similarity index 100%
rename from test/normal/previous-big-word/selections
rename to test/normal/previous-big-word/kak_quoted_selections
diff --git a/test/normal/previous-word-extending/selections b/test/normal/previous-word-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/previous-word-extending/selections
rename to test/normal/previous-word-extending/kak_quoted_selections
diff --git a/test/normal/previous-word-no-underscore/selections b/test/normal/previous-word-no-underscore/kak_quoted_selections
similarity index 100%
rename from test/normal/previous-word-no-underscore/selections
rename to test/normal/previous-word-no-underscore/kak_quoted_selections
diff --git a/test/normal/previous-word/selections b/test/normal/previous-word/kak_quoted_selections
similarity index 100%
rename from test/normal/previous-word/selections
rename to test/normal/previous-word/kak_quoted_selections
diff --git a/test/normal/repeat-select/repeat-end-paragraph/state b/test/normal/repeat-select/repeat-end-paragraph/kak_quoted_selections_desc
similarity index 100%
rename from test/normal/repeat-select/repeat-end-paragraph/state
rename to test/normal/repeat-select/repeat-end-paragraph/kak_quoted_selections_desc
diff --git a/test/normal/repeat-select/repeat-find-char/state b/test/normal/repeat-select/repeat-find-char/kak_quoted_selections_desc
similarity index 100%
rename from test/normal/repeat-select/repeat-find-char/state
rename to test/normal/repeat-select/repeat-find-char/kak_quoted_selections_desc
diff --git a/test/normal/restore-selections/selections b/test/normal/restore-selections/kak_quoted_selections
similarity index 100%
rename from test/normal/restore-selections/selections
rename to test/normal/restore-selections/kak_quoted_selections
diff --git a/test/normal/rotate/selections b/test/normal/rotate/kak_quoted_selections
similarity index 100%
rename from test/normal/rotate/selections
rename to test/normal/rotate/kak_quoted_selections
diff --git a/test/normal/save-selections/selections b/test/normal/save-selections/kak_quoted_selections
similarity index 100%
rename from test/normal/save-selections/selections
rename to test/normal/save-selections/kak_quoted_selections
diff --git a/test/normal/search-extending/selections b/test/normal/search-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/search-extending/selections
rename to test/normal/search-extending/kak_quoted_selections
diff --git a/test/normal/search-reverse-extending/selections b/test/normal/search-reverse-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/search-reverse-extending/selections
rename to test/normal/search-reverse-extending/kak_quoted_selections
diff --git a/test/normal/search-reverse-rightmost/missed-match/selections b/test/normal/search-reverse-rightmost/missed-match/kak_quoted_selections
similarity index 100%
rename from test/normal/search-reverse-rightmost/missed-match/selections
rename to test/normal/search-reverse-rightmost/missed-match/kak_quoted_selections
diff --git a/test/normal/search-reverse-rightmost/overlap/selections b/test/normal/search-reverse-rightmost/overlap/kak_quoted_selections
similarity index 100%
rename from test/normal/search-reverse-rightmost/overlap/selections
rename to test/normal/search-reverse-rightmost/overlap/kak_quoted_selections
diff --git a/test/normal/search-reverse/selections b/test/normal/search-reverse/kak_quoted_selections
similarity index 100%
rename from test/normal/search-reverse/selections
rename to test/normal/search-reverse/kak_quoted_selections
diff --git a/test/normal/search/selections b/test/normal/search/kak_quoted_selections
similarity index 100%
rename from test/normal/search/selections
rename to test/normal/search/kak_quoted_selections
diff --git a/test/normal/select-line-extending/selections b/test/normal/select-line-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/select-line-extending/selections
rename to test/normal/select-line-extending/kak_quoted_selections
diff --git a/test/normal/select-line/selections b/test/normal/select-line/kak_quoted_selections
similarity index 100%
rename from test/normal/select-line/selections
rename to test/normal/select-line/kak_quoted_selections
diff --git a/test/normal/select/selections b/test/normal/select/kak_quoted_selections
similarity index 100%
rename from test/normal/select/selections
rename to test/normal/select/kak_quoted_selections
diff --git a/test/normal/split-at-begin/selections b/test/normal/split-at-begin/kak_quoted_selections
similarity index 100%
rename from test/normal/split-at-begin/selections
rename to test/normal/split-at-begin/kak_quoted_selections
diff --git a/test/normal/split-multiple-lines/selections b/test/normal/split-multiple-lines/kak_quoted_selections
similarity index 100%
rename from test/normal/split-multiple-lines/selections
rename to test/normal/split-multiple-lines/kak_quoted_selections
diff --git a/test/normal/split/selections b/test/normal/split/kak_quoted_selections
similarity index 100%
rename from test/normal/split/selections
rename to test/normal/split/kak_quoted_selections
diff --git a/test/normal/switch-case/selections b/test/normal/switch-case/kak_quoted_selections
similarity index 100%
rename from test/normal/switch-case/selections
rename to test/normal/switch-case/kak_quoted_selections
diff --git a/test/normal/to-char-backward-extending/selections b/test/normal/to-char-backward-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/to-char-backward-extending/selections
rename to test/normal/to-char-backward-extending/kak_quoted_selections
diff --git a/test/normal/to-char-backward/selections b/test/normal/to-char-backward/kak_quoted_selections
similarity index 100%
rename from test/normal/to-char-backward/selections
rename to test/normal/to-char-backward/kak_quoted_selections
diff --git a/test/normal/to-char-forward-extending/selections b/test/normal/to-char-forward-extending/kak_quoted_selections
similarity index 100%
rename from test/normal/to-char-forward-extending/selections
rename to test/normal/to-char-forward-extending/kak_quoted_selections
diff --git a/test/normal/to-char-forward/selections b/test/normal/to-char-forward/kak_quoted_selections
similarity index 100%
rename from test/normal/to-char-forward/selections
rename to test/normal/to-char-forward/kak_quoted_selections
diff --git a/test/normal/trim-drop-empty/selections b/test/normal/trim-drop-empty/kak_quoted_selections
similarity index 100%
rename from test/normal/trim-drop-empty/selections
rename to test/normal/trim-drop-empty/kak_quoted_selections
diff --git a/test/normal/trim-lines/selections b/test/normal/trim-lines/kak_quoted_selections
similarity index 100%
rename from test/normal/trim-lines/selections
rename to test/normal/trim-lines/kak_quoted_selections
diff --git a/test/normal/trim/table/selections b/test/normal/trim/table/kak_quoted_selections
similarity index 100%
rename from test/normal/trim/table/selections
rename to test/normal/trim/table/kak_quoted_selections
diff --git a/test/normal/upper-case/selections b/test/normal/upper-case/kak_quoted_selections
similarity index 100%
rename from test/normal/upper-case/selections
rename to test/normal/upper-case/kak_quoted_selections
diff --git a/test/regression/0-assert-on-itersel/selections b/test/regression/0-assert-on-itersel/kak_quoted_selections
similarity index 100%
rename from test/regression/0-assert-on-itersel/selections
rename to test/regression/0-assert-on-itersel/kak_quoted_selections
diff --git a/test/regression/0-crash-on-pipe-with-selection-access/selections b/test/regression/0-crash-on-pipe-with-selection-access/kak_quoted_selections
similarity index 100%
rename from test/regression/0-crash-on-pipe-with-selection-access/selections
rename to test/regression/0-crash-on-pipe-with-selection-access/kak_quoted_selections
diff --git a/test/regression/0-open-below-should-not-move-cursor-on-eol/state b/test/regression/0-open-below-should-not-move-cursor-on-eol/kak_quoted_selections_desc
similarity index 100%
rename from test/regression/0-open-below-should-not-move-cursor-on-eol/state
rename to test/regression/0-open-below-should-not-move-cursor-on-eol/kak_quoted_selections_desc
diff --git a/test/regression/1014-ambiguous-kak_selections/selections b/test/regression/1014-ambiguous-kak_selections/kak_quoted_selections
similarity index 100%
rename from test/regression/1014-ambiguous-kak_selections/selections
rename to test/regression/1014-ambiguous-kak_selections/kak_quoted_selections
diff --git a/test/regression/1105-object-selection-behaviour/selections b/test/regression/1105-object-selection-behaviour/kak_quoted_selections
similarity index 100%
rename from test/regression/1105-object-selection-behaviour/selections
rename to test/regression/1105-object-selection-behaviour/kak_quoted_selections
diff --git a/test/regression/1233-corrent-cursor-handling-for-indent-objects/selections b/test/regression/1233-corrent-cursor-handling-for-indent-objects/kak_quoted_selections
similarity index 100%
rename from test/regression/1233-corrent-cursor-handling-for-indent-objects/selections
rename to test/regression/1233-corrent-cursor-handling-for-indent-objects/kak_quoted_selections
diff --git a/test/regression/1308-wrong-behaviour-of-kak-indent-on-newline/selections b/test/regression/1308-wrong-behaviour-of-kak-indent-on-newline/kak_quoted_selections
similarity index 100%
rename from test/regression/1308-wrong-behaviour-of-kak-indent-on-newline/selections
rename to test/regression/1308-wrong-behaviour-of-kak-indent-on-newline/kak_quoted_selections
diff --git a/test/regression/1382-column-highlighter-broken-on-horizontal-scroll/script b/test/regression/1382-column-highlighter-broken-on-horizontal-scroll/script
new file mode 100644
index 00000000..bf101dd2
--- /dev/null
+++ b/test/regression/1382-column-highlighter-broken-on-horizontal-scroll/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "xxxxxxxxxx" }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": "x" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "x" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "xxx\u000a" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": " " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": " " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": " " }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:89 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 79 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/1382-column-highlighter-broken-on-horizontal-scroll/ui-out b/test/regression/1382-column-highlighter-broken-on-horizontal-scroll/ui-out
deleted file mode 100644
index 64d333c1..00000000
--- a/test/regression/1382-column-highlighter-broken-on-horizontal-scroll/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "xxxxxxxxxx" }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": "x" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "x" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "xxx\u000a" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": " " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": " " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "blue", "attributes": [] }, "contents": " " }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:89 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 79 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/1433-scrolloff-broken-with-soft-wrap/script b/test/regression/1433-scrolloff-broken-with-soft-wrap/script
new file mode 100644
index 00000000..eb88cf99
--- /dev/null
+++ b/test/regression/1433-scrolloff-broken-with-soft-wrap/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "2\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "3\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "4\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "5\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "6\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "7\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "8\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "9\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "10\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "11\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "12\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "13\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "14\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "15\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "16\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "17\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "18\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "19\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "20\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "21\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "22\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "23 -----------------------------------------------------------------------------" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "wra" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "p" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "24\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 23:84 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 22, "column": 3 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/1433-scrolloff-broken-with-soft-wrap/ui-out b/test/regression/1433-scrolloff-broken-with-soft-wrap/ui-out
deleted file mode 100644
index 9daa5036..00000000
--- a/test/regression/1433-scrolloff-broken-with-soft-wrap/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "2\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "3\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "4\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "5\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "6\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "7\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "8\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "9\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "10\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "11\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "12\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "13\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "14\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "15\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "16\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "17\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "18\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "19\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "20\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "21\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "22\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "23 -----------------------------------------------------------------------------" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "wra" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "p" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "24\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 23:84 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 22, "column": 3 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/1435-misplaced-cursor-with-show_matching-hl/script b/test/regression/1435-misplaced-cursor-with-show_matching-hl/script
new file mode 100644
index 00000000..5fc19ef5
--- /dev/null
+++ b/test/regression/1435-misplaced-cursor-with-show_matching-hl/script
@@ -0,0 +1,13 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "·" }, { "face": { "fg": "default", "bg": "cyan", "attributes": ["final_fg"] }, "contents": "¬" }], [{ "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:2 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "[+]" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 1 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "·" }, { "face": { "fg": "default", "bg": "cyan", "attributes": ["final_fg"] }, "contents": "¬" }], [{ "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:2 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "[+]" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 1 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/1435-misplaced-cursor-with-show_matching-hl/ui-out b/test/regression/1435-misplaced-cursor-with-show_matching-hl/ui-out
deleted file mode 100644
index df245f80..00000000
--- a/test/regression/1435-misplaced-cursor-with-show_matching-hl/ui-out
+++ /dev/null
@@ -1,13 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "·" }, { "face": { "fg": "default", "bg": "cyan", "attributes": ["final_fg"] }, "contents": "¬" }], [{ "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:2 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "[+]" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 1 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "·" }, { "face": { "fg": "default", "bg": "cyan", "attributes": ["final_fg"] }, "contents": "¬" }], [{ "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:2 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "[+]" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 1 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/1453-show_whitespaces-highlighter-breaks-tab-alignment/script b/test/regression/1453-show_whitespaces-highlighter-breaks-tab-alignment/script
new file mode 100644
index 00000000..f6f6d917
--- /dev/null
+++ b/test/regression/1453-show_whitespaces-highlighter-breaks-tab-alignment/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "this" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "is" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "a" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "test" }, { "face": { "fg": "default", "bg": "cyan", "attributes": ["final_fg"] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:15 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "[+]" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 28 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/1453-show_whitespaces-highlighter-breaks-tab-alignment/ui-out b/test/regression/1453-show_whitespaces-highlighter-breaks-tab-alignment/ui-out
deleted file mode 100644
index 3564174e..00000000
--- a/test/regression/1453-show_whitespaces-highlighter-breaks-tab-alignment/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "this" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "is" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "a" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "test" }, { "face": { "fg": "default", "bg": "cyan", "attributes": ["final_fg"] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:15 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "[+]" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 28 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/1504-assertion-on-incorrect-pipe-use/state b/test/regression/1504-assertion-on-incorrect-pipe-use/kak_quoted_selections_desc
similarity index 100%
rename from test/regression/1504-assertion-on-incorrect-pipe-use/state
rename to test/regression/1504-assertion-on-incorrect-pipe-use/kak_quoted_selections_desc
diff --git a/test/regression/1580-A-not-moving-to-eol/state b/test/regression/1580-A-not-moving-to-eol/kak_quoted_selections_desc
similarity index 100%
rename from test/regression/1580-A-not-moving-to-eol/state
rename to test/regression/1580-A-not-moving-to-eol/kak_quoted_selections_desc
diff --git a/test/regression/1731-wrap-hidden-buffer/script b/test/regression/1731-wrap-hidden-buffer/script
new file mode 100644
index 00000000..752c0fbe
--- /dev/null
+++ b/test/regression/1731-wrap-hidden-buffer/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "0" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " \u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "2 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "2 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/1731-wrap-hidden-buffer/ui-out b/test/regression/1731-wrap-hidden-buffer/ui-out
deleted file mode 100644
index 55c7dcd0..00000000
--- a/test/regression/1731-wrap-hidden-buffer/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "0" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " \u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "2 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 0" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "2 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 " }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/1741-scrolloff-hides-end-of-lines/script b/test/regression/1741-scrolloff-hides-end-of-lines/script
new file mode 100644
index 00000000..3cd42d31
--- /dev/null
+++ b/test/regression/1741-scrolloff-hides-end-of-lines/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "0" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1234567890123456789012345678901234567890123456789012345678901234567890123456789" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/1741-scrolloff-hides-end-of-lines/ui-out b/test/regression/1741-scrolloff-hides-end-of-lines/ui-out
deleted file mode 100644
index 71e88020..00000000
--- a/test/regression/1741-scrolloff-hides-end-of-lines/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "0" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "1234567890123456789012345678901234567890123456789012345678901234567890123456789" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/1902-regex-lookbehind-ignore-before-current-pos/state b/test/regression/1902-regex-lookbehind-ignore-before-current-pos/kak_quoted_selections_desc
similarity index 100%
rename from test/regression/1902-regex-lookbehind-ignore-before-current-pos/state
rename to test/regression/1902-regex-lookbehind-ignore-before-current-pos/kak_quoted_selections_desc
diff --git a/test/regression/1904-select-empty-line-indent-gets-whole-buffer/selections b/test/regression/1904-select-empty-line-indent-gets-whole-buffer/kak_quoted_selections
similarity index 100%
rename from test/regression/1904-select-empty-line-indent-gets-whole-buffer/selections
rename to test/regression/1904-select-empty-line-indent-gets-whole-buffer/kak_quoted_selections
diff --git a/test/regression/1920-crash-on-python-in-docstring/script b/test/regression/1920-crash-on-python-in-docstring/script
new file mode 100644
index 00000000..a064fef7
--- /dev/null
+++ b/test/regression/1920-crash-on-python-in-docstring/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": ["final_fg","final_bg"] }, "contents": "\"" }, { "face": { "fg": "magenta", "bg": "default", "attributes": [] }, "contents": "\"\">>> " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\"\"\"\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/1920-crash-on-python-in-docstring/ui-out b/test/regression/1920-crash-on-python-in-docstring/ui-out
deleted file mode 100644
index 33cba659..00000000
--- a/test/regression/1920-crash-on-python-in-docstring/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": ["final_fg","final_bg"] }, "contents": "\"" }, { "face": { "fg": "magenta", "bg": "default", "attributes": [] }, "contents": "\"\">>> " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\"\"\"\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/2030-custom-selection-nesting/selections b/test/regression/2030-custom-selection-nesting/kak_quoted_selections
similarity index 100%
rename from test/regression/2030-custom-selection-nesting/selections
rename to test/regression/2030-custom-selection-nesting/kak_quoted_selections
diff --git a/test/regression/2056-assert-on-small-window/script b/test/regression/2056-assert-on-small-window/script
new file mode 100644
index 00000000..0783d370
--- /dev/null
+++ b/test/regression/2056-assert-on-small-window/script
@@ -0,0 +1 @@
+ui_in '{ "jsonrpc": "2.0", "method": "resize", "params": [ 5, 2 ] }'
diff --git a/test/regression/2056-assert-on-small-window/ui-in b/test/regression/2056-assert-on-small-window/ui-in
deleted file mode 100644
index 35c9d9a6..00000000
--- a/test/regression/2056-assert-on-small-window/ui-in
+++ /dev/null
@@ -1 +0,0 @@
-{ "jsonrpc": "2.0", "method": "resize", "params": [ 5, 2 ] }
diff --git a/test/regression/2078-assert-on-restoring-invalid-selections/state b/test/regression/2078-assert-on-restoring-invalid-selections/kak_quoted_selections_desc
similarity index 100%
rename from test/regression/2078-assert-on-restoring-invalid-selections/state
rename to test/regression/2078-assert-on-restoring-invalid-selections/kak_quoted_selections_desc
diff --git a/test/regression/2129-inside-parentheses/selections b/test/regression/2129-inside-parentheses/kak_quoted_selections
similarity index 100%
rename from test/regression/2129-inside-parentheses/selections
rename to test/regression/2129-inside-parentheses/kak_quoted_selections
diff --git a/test/regression/2245-wrap-long-word/script b/test/regression/2245-wrap-long-word/script
new file mode 100644
index 00000000..e9b262d7
--- /dev/null
+++ b/test/regression/2245-wrap-long-word/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " short line\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " line\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "ng line\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/2245-wrap-long-word/ui-out b/test/regression/2245-wrap-long-word/ui-out
deleted file mode 100644
index 719bf285..00000000
--- a/test/regression/2245-wrap-long-word/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " short line\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " line\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "ng line\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/2367-surround-with-tight-nesting/selections b/test/regression/2367-surround-with-tight-nesting/kak_quoted_selections
similarity index 100%
rename from test/regression/2367-surround-with-tight-nesting/selections
rename to test/regression/2367-surround-with-tight-nesting/kak_quoted_selections
diff --git a/test/regression/2420-discrepancy-in-star-behaviour/state b/test/regression/2420-discrepancy-in-star-behaviour/kak_quoted_selections_desc
similarity index 100%
rename from test/regression/2420-discrepancy-in-star-behaviour/state
rename to test/regression/2420-discrepancy-in-star-behaviour/kak_quoted_selections_desc
diff --git a/test/regression/2499-html-regions-assert/script b/test/regression/2499-html-regions-assert/script
new file mode 100644
index 00000000..b5fe88cf
--- /dev/null
+++ b/test/regression/2499-html-regions-assert/script
@@ -0,0 +1 @@
+ui_out -ignore 18 # prevent deadlock on Mac OS
diff --git a/test/regression/2562-column-highlighter-bleeding/script b/test/regression/2562-column-highlighter-bleeding/script
new file mode 100644
index 00000000..1cd55794
--- /dev/null
+++ b/test/regression/2562-column-highlighter-bleeding/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "cyan", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/2562-column-highlighter-bleeding/ui-out b/test/regression/2562-column-highlighter-bleeding/ui-out
deleted file mode 100644
index d64ac218..00000000
--- a/test/regression/2562-column-highlighter-bleeding/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "cyan", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/2711-weird-regex-highlighter-behaviour/script b/test/regression/2711-weird-regex-highlighter-behaviour/script
new file mode 100644
index 00000000..360eee80
--- /dev/null
+++ b/test/regression/2711-weird-regex-highlighter-behaviour/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "f" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "oo.bar();\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/2711-weird-regex-highlighter-behaviour/ui-out b/test/regression/2711-weird-regex-highlighter-behaviour/ui-out
deleted file mode 100644
index c526a3c0..00000000
--- a/test/regression/2711-weird-regex-highlighter-behaviour/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "f" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "oo.bar();\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/2999-buggy-wrapping/script b/test/regression/2999-buggy-wrapping/script
new file mode 100644
index 00000000..da5a18f1
--- /dev/null
+++ b/test/regression/2999-buggy-wrapping/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "l" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "et x = \"rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "rrrrrrrrrrrrrrrrrrrr\"\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "proc translateStr*(toTrans: string, transTable: Table[int, int]): string =\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " for charac in toTrans.runes:\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " if charac.int in transTable:\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " result &= transTable[charac.int].Rune\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " else:\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " result &= charac\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "echo translateStr(x, lowTOUP.toTable)\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 2:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/2999-buggy-wrapping/ui-out b/test/regression/2999-buggy-wrapping/ui-out
deleted file mode 100644
index 078717c6..00000000
--- a/test/regression/2999-buggy-wrapping/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "l" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "et x = \"rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "rrrrrrrrrrrrrrrrrrrr\"\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "proc translateStr*(toTrans: string, transTable: Table[int, int]): string =\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " for charac in toTrans.runes:\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " if charac.int in transTable:\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " result &= transTable[charac.int].Rune\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " else:\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " result &= charac\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "echo translateStr(x, lowTOUP.toTable)\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 2:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/3048-word-wrapping-broken/script b/test/regression/3048-word-wrapping-broken/script
new file mode 100644
index 00000000..131403b0
--- /dev/null
+++ b/test/regression/3048-word-wrapping-broken/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "[" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "ab" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/3048-word-wrapping-broken/ui-out b/test/regression/3048-word-wrapping-broken/ui-out
deleted file mode 100644
index 555d0d99..00000000
--- a/test/regression/3048-word-wrapping-broken/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "[" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "ab" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/595-smart-search-unicode/state b/test/regression/595-smart-search-unicode/kak_quoted_selections_desc
similarity index 100%
rename from test/regression/595-smart-search-unicode/state
rename to test/regression/595-smart-search-unicode/kak_quoted_selections_desc
diff --git a/test/regression/638-highlight-codepoint-with-bracket/script b/test/regression/638-highlight-codepoint-with-bracket/script
new file mode 100644
index 00000000..f336843a
--- /dev/null
+++ b/test/regression/638-highlight-codepoint-with-bracket/script
@@ -0,0 +1,7 @@
+ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "red", "bg": "default", "attributes": [] }, "contents": "“" }, { "face": { "fg": "white", "bg": "blue", "attributes": [] }, "contents": "We" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "ought to scrape this planet clean of every living thing on it," }, { "face": { "fg": "red", "bg": "default", "attributes": [] }, "contents": "”" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
+ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:4 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 3 }] }'
+ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
diff --git a/test/regression/638-highlight-codepoint-with-bracket/ui-out b/test/regression/638-highlight-codepoint-with-bracket/ui-out
deleted file mode 100644
index fc6b0f08..00000000
--- a/test/regression/638-highlight-codepoint-with-bracket/ui-out
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }
-{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "red", "bg": "default", "attributes": [] }, "contents": "“" }, { "face": { "fg": "white", "bg": "blue", "attributes": [] }, "contents": "We" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "ought to scrape this planet clean of every living thing on it," }, { "face": { "fg": "red", "bg": "default", "attributes": [] }, "contents": "”" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
-{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:4 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
-{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 3 }] }
-{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
diff --git a/test/regression/699-to-eol-from-eol/state b/test/regression/699-to-eol-from-eol/kak_quoted_selections_desc
similarity index 100%
rename from test/regression/699-to-eol-from-eol/state
rename to test/regression/699-to-eol-from-eol/kak_quoted_selections_desc
diff --git a/test/regression/751-wrong-selection-after-undo/selections b/test/regression/751-wrong-selection-after-undo/kak_quoted_selections
similarity index 100%
rename from test/regression/751-wrong-selection-after-undo/selections
rename to test/regression/751-wrong-selection-after-undo/kak_quoted_selections
diff --git a/test/regression/809-alt-f-t-to-first-char/selections b/test/regression/809-alt-f-t-to-first-char/kak_quoted_selections
similarity index 100%
rename from test/regression/809-alt-f-t-to-first-char/selections
rename to test/regression/809-alt-f-t-to-first-char/kak_quoted_selections
diff --git a/test/regression/811-double-width-codepoints/selections b/test/regression/811-double-width-codepoints/kak_quoted_selections
similarity index 100%
rename from test/regression/811-double-width-codepoints/selections
rename to test/regression/811-double-width-codepoints/kak_quoted_selections
diff --git a/test/regression/844-prev-word-at-buffer-start/selections b/test/regression/844-prev-word-at-buffer-start/kak_quoted_selections
similarity index 100%
rename from test/regression/844-prev-word-at-buffer-start/selections
rename to test/regression/844-prev-word-at-buffer-start/kak_quoted_selections
diff --git a/test/regression/921-keep-empty-line-matches-all-lines/selections b/test/regression/921-keep-empty-line-matches-all-lines/kak_quoted_selections
similarity index 100%
rename from test/regression/921-keep-empty-line-matches-all-lines/selections
rename to test/regression/921-keep-empty-line-matches-all-lines/kak_quoted_selections
diff --git a/test/run b/test/run
index 24102c60..e83cee77 100755
--- a/test/run
+++ b/test/run
@@ -21,13 +21,6 @@ main() {
}
try %{ exec -with-maps -with-hooks "%sh{cat cmd}" }
exec -with-hooks
- eval -buffer *debug* write debug
- nop %sh{
- printf %s\\n "$kak_quoted_selections" > selections
- printf %s\\n "$kak_quoted_selections_desc" > state
- }
- write out
- quit!
'
root=$PWD
@@ -54,23 +47,40 @@ main() {
continue
fi
- ui_in="${root}/${dir}/ui-in"
- [ ! -f $ui_in ] && ui_in="/dev/null"
+ env_vars=$(cd "${root}/${dir}" && ls -1 kak_* 2>/dev/null)
+ mkfifo ui-in ui-out
number_tests=$(($number_tests + 1))
touch in; cp in out
session="kak-tests"
rm -f "$(session_path $session)"
- $root/../src/kak out -n -s "$session" -ui json -e "$kak_commands" > ui-out < "${ui_in}"
- retval=$?
+ $root/../src/kak out -n -s "$session" -ui json -e "$kak_commands" >ui-out ui-in
+
+ if [ -f "${root}/${dir}/script" ]; then
+ . "${root}/${dir}/script"
+ else
+ # At least wait for kak to initialize so we don't deadlock
+ ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
+ fi
+
+ finished_commands |$root/../src/kak -p "$session" 2>/dev/null
+
+ wait $kakpid
+ retval=$?
+
+ exec 3>&- 4<&-
+
if [ ! -e error ]; then # failure not expected
if [ $retval -ne 0 ]; then
printf "${red}$indent%s${none}\n" "$name"
echo "$indent Kakoune returned error $retval"
failed=1
else
- for file in out selections state ui-out; do
+ for file in out $env_vars; do
if [ -f $root/$dir/$file ] && ! cmp -s $root/$dir/$file $file; then
if [ $failed -eq 0 ]; then
printf "${red}$indent%s${none}\n" "$name"
@@ -138,4 +148,49 @@ show_diff() {
done
}
+finished_commands() {
+ printf %s 'eval -client client0 %{
+ eval -buffer *debug* write debug
+ nop %sh{
+ '
+ for env_var in $env_vars; do
+ printf 'printf %%s\\\\n "$%s" >%s\n' "$env_var" "$env_var"
+ done
+ printf %s ' }
+ write out
+ quit!
+ }
+ '
+}
+
+# Script Assertions ├───────────────────────────────────────────────────────────
+
+ui_in() {
+ printf '%s\n' "$1" >&3
+}
+
+ui_out() {
+ while [ $# -ne 0 ]; do
+ case "$1" in
+ -ignore)
+ shift
+ skip_count="$1"
+ while [ $skip_count -gt 0 ]; do
+ read -r event <&4
+ skip_count=$(( skip_count - 1 ))
+ done
+ ;;
+ *)
+ read -r event <&4
+ if [ ! "$1" = "$event" ] && [ $failed -eq 0 ]; then
+ printf "${red}$indent%s${none}\n" "$name"
+ printf "${indent} - %s\n${indent} ${red}+ %s${none}\n" "$2" "$event"
+ failed=1
+ fi
+ ;;
+ esac
+ shift
+ done
+}
+
main "$@"