diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/attribute.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/attribute.scope
index ef5f5052b5..ad4db47809 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/attribute.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/attribute.scope
@@ -3,15 +3,15 @@
[Content] =
[Domain] = 0:5-0:14
-0|
>---------<
+0|
[Removal] = 0:4-0:14
-0|
>----------<
+0|
[Leading delimiter] = 0:4-0:5
-0|
>-<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/comment.block.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/comment.block.scope
index 6c973b0fe9..5bbed642b3 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/comment.block.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/comment.block.scope
@@ -6,10 +6,9 @@
[Content] =
[Removal] =
[Domain] = 0:0-2:3
-0|
---<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/element.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/element.scope
index 958d943058..23ebb42694 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/element.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/element.scope
@@ -4,11 +4,11 @@
[Content] =
[Removal] =
[Domain] = 0:0-0:21
-0|
>---------------------<
+0|
[Interior] = 0:15-0:15
-0|
><
+0|
[Insertion delimiter] = "\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/endTag.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/endTag.scope
index 190fd0750f..61c4e46bcd 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/endTag.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/endTag.scope
@@ -3,11 +3,11 @@
[Content] =
[Removal] = 0:15-0:21
-0|
>------<
+0|
[Domain] = 0:0-0:21
-0|
>---------------------<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/key.attribute.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/key.attribute.scope
index 6bedb626d7..aae05371b9 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/key.attribute.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/key.attribute.scope
@@ -2,19 +2,19 @@
---
[Content] = 0:5-0:7
-0|
>--<
+0|
[Removal] = 0:5-0:8
-0|
>---<
+0|
[Trailing delimiter] = 0:7-0:8
-0|
>-<
+0|
[Domain] = 0:5-0:14
-0|
>---------<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/key.attribute2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/key.attribute2.scope
index 16a16f14ca..bb8051a066 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/key.attribute2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/key.attribute2.scope
@@ -3,15 +3,15 @@
[Content] =
[Domain] = 0:5-0:13
-0|
>--------<
+0|
[Removal] = 0:4-0:13
-0|
>---------<
+0|
[Leading delimiter] = 0:4-0:5
-0|
>-<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/startTag.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/startTag.scope
index 1fd64adf6f..d3f5ce5ef8 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/startTag.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/startTag.scope
@@ -3,11 +3,11 @@
[Content] =
[Removal] = 0:0-0:15
-0|
>---------------<
+0|
[Domain] = 0:0-0:21
-0|
>---------------------<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/tags.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/tags.scope
index 10ab2153df..680eb20ef9 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/tags.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/tags.scope
@@ -3,18 +3,18 @@
[.1 Content] =
[.1 Removal] = 0:0-0:5
-0| hello
>-----<
+0| hello
[.1 Insertion delimiter] = " "
[.2 Content] =
[.2 Removal] = 0:10-0:16
-0| hello
>------<
+0| hello
[.2 Insertion delimiter] = " "
[Domain] = 0:0-0:16
-0| hello
>----------------<
+0| hello
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/value.attribute.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/value.attribute.scope
index 46e212934a..c9b9bfb687 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/value.attribute.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/html/value.attribute.scope
@@ -2,19 +2,19 @@
---
[Content] = 0:8-0:14
-0|
>------<
+0|
[Removal] = 0:7-0:14
-0|
>-------<
+0|
[Leading delimiter] = 0:7-0:8
-0|
>-<
+0|
[Domain] = 0:5-0:14
-0|
>---------<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/name.foreach.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/name.foreach.scope
index abfa64910b..82b3a98f98 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/name.foreach.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/name.foreach.scope
@@ -4,26 +4,25 @@ for (final Item item : items) {
---
[Content] = 0:16-0:20
-0| for (final Item item : items) {
>----<
+0| for (final Item item : items) {
[Removal] = 0:16-0:21
-0| for (final Item item : items) {
>-----<
+0| for (final Item item : items) {
[Leading delimiter] = 0:15-0:16
-0| for (final Item item : items) {
>-<
+0| for (final Item item : items) {
[Trailing delimiter] = 0:20-0:21
-0| for (final Item item : items) {
>-<
+0| for (final Item item : items) {
[Domain] = 0:0-2:1
-0| for (final Item item : items) {
>-------------------------------
+0| for (final Item item : items) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/type.foreach.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/type.foreach.scope
index ee25dc2976..8d68f3643e 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/type.foreach.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/type.foreach.scope
@@ -4,26 +4,25 @@ for (final Item item : items) {
---
[Content] = 0:11-0:15
-0| for (final Item item : items) {
>----<
+0| for (final Item item : items) {
[Removal] = 0:11-0:16
-0| for (final Item item : items) {
>-----<
+0| for (final Item item : items) {
[Leading delimiter] = 0:10-0:11
-0| for (final Item item : items) {
>-<
+0| for (final Item item : items) {
[Trailing delimiter] = 0:15-0:16
-0| for (final Item item : items) {
>-<
+0| for (final Item item : items) {
[Domain] = 0:0-2:1
-0| for (final Item item : items) {
>-------------------------------
+0| for (final Item item : items) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/value.foreach.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/value.foreach.scope
index 66171bc4a6..9ab4bd49c1 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/value.foreach.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/java/value.foreach.scope
@@ -4,22 +4,21 @@ for (final Item item : items) {
---
[Content] = 0:23-0:28
-0| for (final Item item : items) {
>-----<
+0| for (final Item item : items) {
[Removal] = 0:22-0:28
-0| for (final Item item : items) {
>------<
+0| for (final Item item : items) {
[Leading delimiter] = 0:22-0:23
-0| for (final Item item : items) {
>-<
+0| for (final Item item : items) {
[Domain] = 0:0-2:1
-0| for (final Item item : items) {
>-------------------------------
+0| for (final Item item : items) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction.scope
index 4600d8f8e0..515220a331 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction.scope
@@ -6,10 +6,9 @@ function() {
[Content] =
[Removal] =
[Domain] = 0:0-2:1
-0| function() {
>------------
+0| function() {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction2.scope
index 2db907099e..f669347db4 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction2.scope
@@ -6,10 +6,9 @@
[Content] =
[Removal] =
[Domain] = 0:0-2:1
-0| () => {
>-------
+0| () => {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction3.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction3.scope
index fa873c831c..5556d41df0 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction3.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/anonymousFunction3.scope
@@ -4,7 +4,7 @@
[Content] =
[Removal] =
[Domain] = 0:0-0:7
-0| () => 0
>-------<
+0| () => 0
[Insertion delimiter] = "\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.actual.iteration.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.actual.iteration.scope
index 9d0071fcae..b05c47ed24 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.actual.iteration.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.actual.iteration.scope
@@ -2,9 +2,9 @@ foo(arg1, arg2);
---
[Range] = 0:4-0:14
-0| foo(arg1, arg2);
>----------<
+0| foo(arg1, arg2);
[Domain] = 0:3-0:15
-0| foo(arg1, arg2);
>------------<
+0| foo(arg1, arg2);
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.actual.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.actual.scope
index 8c0db0d688..440d75422b 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.actual.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.actual.scope
@@ -4,7 +4,7 @@ foo.bar(value);
[Content] =
[Removal] =
[Domain] = 0:8-0:13
-0| foo.bar(value);
>-----<
+0| foo.bar(value);
[Insertion delimiter] = ", "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.formal.iteration.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.formal.iteration.scope
index 5950d2c393..cf4f34c540 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.formal.iteration.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.formal.iteration.scope
@@ -4,13 +4,12 @@ function myFunk(arg1, arg2) {
---
[Range] = 0:16-0:26
-0| function myFunk(arg1, arg2) {
>----------<
+0| function myFunk(arg1, arg2) {
[Domain] = 0:0-2:1
-0| function myFunk(arg1, arg2) {
>-----------------------------
+0| function myFunk(arg1, arg2) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.formal.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.formal.scope
index 0b48f4306d..e338841fd4 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.formal.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/argument.formal.scope
@@ -6,7 +6,7 @@ function myFunk(value) {
[Content] =
[Removal] =
[Domain] = 0:16-0:21
-0| function myFunk(value) {
>-----<
+0| function myFunk(value) {
[Insertion delimiter] = ", "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/attribute.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/attribute.scope
index ef5f5052b5..ad4db47809 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/attribute.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/attribute.scope
@@ -3,15 +3,15 @@
[Content] =
[Domain] = 0:5-0:14
-0|
>---------<
+0|
[Removal] = 0:4-0:14
-0|
>----------<
+0|
[Leading delimiter] = 0:4-0:5
-0|
>-<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.iteration.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.iteration.scope
index 9f01d167c2..b39fb34ecc 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.iteration.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.iteration.scope
@@ -11,21 +11,14 @@ else {
[Range] =
[Domain] = 0:0-8:1
-0| if (true) {
>-----------
+0| if (true) {
1|
-
2| }
- -
3| else if (false) {
- -----------------
4|
-
5| }
- -
6| else {
- ------
7|
-
8| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.scope
index 6105b54ad2..6202480fc7 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.scope
@@ -11,20 +11,17 @@ else {
[#1 Content] =
[#1 Domain] = 0:0-2:1
-0| if (true) {
>-----------
+0| if (true) {
1|
-
2| }
-<
[#1 Removal] = 0:0-3:5
-0| if (true) {
>-----------
+0| if (true) {
1|
-
2| }
- -
3| else if (false) {
-----<
@@ -34,10 +31,9 @@ else {
[#2 Content] =
[#2 Removal] =
[#2 Domain] = 3:0-5:1
-3| else if (false) {
>-----------------
+3| else if (false) {
4|
-
5| }
-<
@@ -47,10 +43,9 @@ else {
[#3 Content] =
[#3 Removal] =
[#3 Domain] = 6:0-8:1
-6| else {
>------
+6| else {
7|
-
8| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.iteration.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.iteration.scope
index 774b8c0db5..e01445e1cd 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.iteration.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.iteration.scope
@@ -6,11 +6,9 @@ switch (value) {
[Range] =
[Domain] = 0:0-3:1
-0| switch (value) {
>----------------
+0| switch (value) {
1| case 0: { }
- -------------
2| case 1: { }
- -------------
3| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.scope
index e613267613..9d9b6fdd4a 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.scope
@@ -5,15 +5,15 @@ switch (value) {
[Content] =
[Domain] = 1:2-1:13
-1| case 0: { }
>-----------<
+1| case 0: { }
[Removal] = 1:0-1:13
-1| case 0: { }
>-------------<
+1| case 0: { }
[Leading delimiter] = 1:0-1:2
-1| case 0: { }
>--<
+1| case 0: { }
[Insertion delimiter] = "\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.ternary.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.ternary.scope
index 5ee6957aad..92e00b0f68 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.ternary.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.ternary.scope
@@ -3,35 +3,35 @@ aaa ? bbb : ccc;
[#1 Content] =
[#1 Domain] = 0:6-0:9
-0| aaa ? bbb : ccc;
>---<
+0| aaa ? bbb : ccc;
[#1 Removal] = 0:6-0:10
-0| aaa ? bbb : ccc;
>----<
+0| aaa ? bbb : ccc;
[#1 Leading delimiter] = 0:5-0:6
-0| aaa ? bbb : ccc;
>-<
+0| aaa ? bbb : ccc;
[#1 Trailing delimiter] = 0:9-0:10
-0| aaa ? bbb : ccc;
>-<
+0| aaa ? bbb : ccc;
[#1 Insertion delimiter] = "\n"
[#2 Content] =
[#2 Domain] = 0:12-0:15
-0| aaa ? bbb : ccc;
>---<
+0| aaa ? bbb : ccc;
[#2 Removal] = 0:11-0:15
-0| aaa ? bbb : ccc;
>----<
+0| aaa ? bbb : ccc;
[#2 Leading delimiter] = 0:11-0:12
-0| aaa ? bbb : ccc;
>-<
+0| aaa ? bbb : ccc;
[#2 Insertion delimiter] = "\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.try.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.try.scope
index 40723afd3f..95896234b1 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.try.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.try.scope
@@ -12,10 +12,9 @@ finally {
[#1 Content] =
[#1 Removal] =
[#1 Domain] = 0:0-2:1
-0| try {
>-----
+0| try {
1|
-
2| }
-<
@@ -25,10 +24,9 @@ finally {
[#2 Content] =
[#2 Removal] =
[#2 Domain] = 3:0-5:1
-3| catch(error) {
>--------------
+3| catch(error) {
4|
-
5| }
-<
@@ -38,10 +36,9 @@ finally {
[#3 Content] =
[#3 Removal] =
[#3 Domain] = 6:0-8:1
-6| finally {
>---------
+6| finally {
7|
-
8| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/class.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/class.scope
index fcbcf8d9d1..9b0eef7978 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/class.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/class.scope
@@ -6,10 +6,9 @@ class MyClass {
[Content] =
[Removal] =
[Domain] = 0:0-2:1
-0| class MyClass {
>---------------
+0| class MyClass {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/className.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/className.scope
index 6c8f825b9b..428df96465 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/className.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/className.scope
@@ -4,26 +4,25 @@ class MyClass {
---
[Content] = 0:6-0:13
-0| class MyClass {
>-------<
+0| class MyClass {
[Removal] = 0:6-0:14
-0| class MyClass {
>--------<
+0| class MyClass {
[Leading delimiter] = 0:5-0:6
-0| class MyClass {
>-<
+0| class MyClass {
[Trailing delimiter] = 0:13-0:14
-0| class MyClass {
>-<
+0| class MyClass {
[Domain] = 0:0-2:1
-0| class MyClass {
>---------------
+0| class MyClass {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.block.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.block.scope
index c6263b704d..f8b38ca6af 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.block.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.block.scope
@@ -6,10 +6,9 @@
[Content] =
[Removal] =
[Domain] = 0:0-2:2
-0| /*
>--
+0| /*
1| Hello world
- -------------
2| */
--<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.block2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.block2.scope
index 0b1fc29e6e..a0ab76da25 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.block2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.block2.scope
@@ -6,10 +6,9 @@
[Content] =
[Removal] =
[Domain] = 0:0-2:2
-0| /**
>---
+0| /**
1| * Hello world
- -------------
2| */
--<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.line.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.line.scope
index 517cc2e6e2..7d1477b8a1 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.line.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/comment.line.scope
@@ -4,7 +4,7 @@
[Content] =
[Removal] =
[Domain] = 0:0-0:14
-0| // Hello world
>--------------<
+0| // Hello world
[Insertion delimiter] = "\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.doWhile.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.doWhile.scope
index df4978dfbf..b32c0c4386 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.doWhile.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.doWhile.scope
@@ -5,14 +5,13 @@ do {
[Content] =
[Removal] = 2:9-2:13
-2| } while (true);
>----<
+2| } while (true);
[Domain] = 0:0-2:15
-0| do {
>----
+0| do {
1|
-
2| } while (true);
---------------<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.for.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.for.scope
index 7e6c9a90cc..194410b763 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.for.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.for.scope
@@ -4,22 +4,21 @@ for (let i = 0; i < 10; ++i) {
---
[Content] = 0:16-0:22
-0| for (let i = 0; i < 10; ++i) {
>------<
+0| for (let i = 0; i < 10; ++i) {
[Removal] = 0:15-0:22
-0| for (let i = 0; i < 10; ++i) {
>-------<
+0| for (let i = 0; i < 10; ++i) {
[Leading delimiter] = 0:15-0:16
-0| for (let i = 0; i < 10; ++i) {
>-<
+0| for (let i = 0; i < 10; ++i) {
[Domain] = 0:0-2:1
-0| for (let i = 0; i < 10; ++i) {
>------------------------------
+0| for (let i = 0; i < 10; ++i) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.if.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.if.scope
index c0e42c6b3e..6c1a02e37f 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.if.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.if.scope
@@ -5,14 +5,13 @@ if (true) {
[Content] =
[Removal] = 0:4-0:8
-0| if (true) {
>----<
+0| if (true) {
[Domain] = 0:0-2:1
-0| if (true) {
>-----------
+0| if (true) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.switchCase.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.switchCase.scope
index e88fccb478..34114d7a74 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.switchCase.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.switchCase.scope
@@ -4,19 +4,19 @@ switch (value) {
---
[Content] = 1:7-1:8
-1| case 0: { }
>-<
+1| case 0: { }
[Removal] = 1:6-1:8
-1| case 0: { }
>--<
+1| case 0: { }
[Leading delimiter] = 1:6-1:7
-1| case 0: { }
>-<
+1| case 0: { }
[Domain] = 1:2-1:13
-1| case 0: { }
>-----------<
+1| case 0: { }
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.ternary.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.ternary.scope
index da1b504fbd..2b6cdb301a 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.ternary.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.ternary.scope
@@ -2,19 +2,19 @@ true ? 0 : 1
---
[Content] = 0:0-0:4
-0| true ? 0 : 1
>----<
+0| true ? 0 : 1
[Removal] = 0:0-0:5
-0| true ? 0 : 1
>-----<
+0| true ? 0 : 1
[Trailing delimiter] = 0:4-0:5
-0| true ? 0 : 1
>-<
+0| true ? 0 : 1
[Domain] = 0:0-0:12
-0| true ? 0 : 1
>------------<
+0| true ? 0 : 1
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.while.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.while.scope
index cac8942e85..ff4a0f87c7 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.while.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.while.scope
@@ -5,14 +5,13 @@ while (true) {
[Content] =
[Removal] = 0:7-0:11
-0| while (true) {
>----<
+0| while (true) {
[Domain] = 0:0-2:1
-0| while (true) {
>--------------
+0| while (true) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/element.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/element.scope
index 958d943058..23ebb42694 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/element.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/element.scope
@@ -4,11 +4,11 @@
[Content] =
[Removal] =
[Domain] = 0:0-0:21
-0|
>---------------------<
+0|
[Interior] = 0:15-0:15
-0|
><
+0|
[Insertion delimiter] = "\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/endTag.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/endTag.scope
index 190fd0750f..61c4e46bcd 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/endTag.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/endTag.scope
@@ -3,11 +3,11 @@
[Content] =
[Removal] = 0:15-0:21
-0|
>------<
+0|
[Domain] = 0:0-0:21
-0|
>---------------------<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/fieldAccess.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/fieldAccess.scope
index 7fc641bc10..e9cd772e41 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/fieldAccess.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/fieldAccess.scope
@@ -4,8 +4,8 @@ foo.bar(0);
[#1 Content] =
[#1 Removal] =
[#1 Domain] = 0:0-0:3
-0| foo.bar(0);
>---<
+0| foo.bar(0);
[#1 Insertion delimiter] = " "
@@ -13,7 +13,7 @@ foo.bar(0);
[#2 Content] =
[#2 Removal] =
[#2 Domain] = 0:3-0:10
-0| foo.bar(0);
>-------<
+0| foo.bar(0);
[#2 Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCall.constructor.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCall.constructor.scope
index 0b3173665f..5ef02ad32b 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCall.constructor.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCall.constructor.scope
@@ -4,7 +4,7 @@ new Foo.bar(0);
[Content] =
[Removal] =
[Domain] = 0:0-0:14
-0| new Foo.bar(0);
>--------------<
+0| new Foo.bar(0);
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCall.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCall.scope
index dcad1f87d9..102bc15871 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCall.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCall.scope
@@ -4,7 +4,7 @@ foo.bar(0);
[Content] =
[Removal] =
[Domain] = 0:0-0:10
-0| foo.bar(0);
>----------<
+0| foo.bar(0);
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCallee.constructor.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCallee.constructor.scope
index a68bbf2531..7b6abd009a 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCallee.constructor.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCallee.constructor.scope
@@ -3,11 +3,11 @@ new Foo.bar(0);
[Content] =
[Removal] = 0:0-0:11
-0| new Foo.bar(0);
>-----------<
+0| new Foo.bar(0);
[Domain] = 0:0-0:14
-0| new Foo.bar(0);
>--------------<
+0| new Foo.bar(0);
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCallee.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCallee.scope
index 920f077880..1b831132c6 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCallee.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionCallee.scope
@@ -3,11 +3,11 @@ foo.bar(0);
[Content] =
[Removal] = 0:0-0:7
-0| foo.bar(0);
>-------<
+0| foo.bar(0);
[Domain] = 0:0-0:10
-0| foo.bar(0);
>----------<
+0| foo.bar(0);
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionName.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionName.scope
index f2a9e5ea0b..92194c85e2 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionName.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/functionName.scope
@@ -5,18 +5,17 @@ function myFunk() {
[Content] =
[Removal] = 0:9-0:15
-0| function myFunk() {
>------<
+0| function myFunk() {
[Leading delimiter] = 0:8-0:9
-0| function myFunk() {
>-<
+0| function myFunk() {
[Domain] = 0:0-2:1
-0| function myFunk() {
>-------------------
+0| function myFunk() {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/ifStatement.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/ifStatement.scope
index c9a4ad04a6..d01f5e842d 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/ifStatement.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/ifStatement.scope
@@ -6,10 +6,9 @@ if (true) {
[Content] =
[Removal] =
[Domain] = 0:0-2:1
-0| if (true) {
>-----------
+0| if (true) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.attribute.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.attribute.scope
index 6bedb626d7..aae05371b9 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.attribute.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.attribute.scope
@@ -2,19 +2,19 @@
---
[Content] = 0:5-0:7
-0|
>--<
+0|
[Removal] = 0:5-0:8
-0|
>---<
+0|
[Trailing delimiter] = 0:7-0:8
-0|
>-<
+0|
[Domain] = 0:5-0:14
-0|
>---------<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.attribute2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.attribute2.scope
index 16a16f14ca..bb8051a066 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.attribute2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.attribute2.scope
@@ -3,15 +3,15 @@
[Content] =
[Domain] = 0:5-0:13
-0|
>--------<
+0|
[Removal] = 0:4-0:13
-0|
>---------<
+0|
[Leading delimiter] = 0:4-0:5
-0|
>-<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.mapPair.iteration.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.mapPair.iteration.scope
index 6802f51c3a..80af86055c 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.mapPair.iteration.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.mapPair.iteration.scope
@@ -3,5 +3,5 @@
[Range] =
[Domain] = 0:1-0:13
-0| { value: 123 }
>------------<
+0| { value: 123 }
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.mapPair.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.mapPair.scope
index 12ed6538b7..efe7fbfce3 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.mapPair.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/key.mapPair.scope
@@ -2,19 +2,19 @@
---
[Content] = 0:2-0:7
-0| { value: 123 }
>-----<
+0| { value: 123 }
[Removal] = 0:2-0:9
-0| { value: 123 }
>-------<
+0| { value: 123 }
[Trailing delimiter] = 0:7-0:9
-0| { value: 123 }
>--<
+0| { value: 123 }
[Domain] = 0:2-0:12
-0| { value: 123 }
>----------<
+0| { value: 123 }
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/list.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/list.scope
index 80975cf8de..54a5d795c2 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/list.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/list.scope
@@ -4,7 +4,7 @@
[Content] =
[Removal] =
[Domain] = 0:0-0:9
-0| [1, 2, 3]
>---------<
+0| [1, 2, 3]
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/map.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/map.scope
index 99fad9cd56..7ae60ad3a8 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/map.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/map.scope
@@ -4,7 +4,7 @@
[Content] =
[Removal] =
[Domain] = 0:0-0:14
-0| { value: 123 }
>--------------<
+0| { value: 123 }
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.assignment.pattern.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.assignment.pattern.scope
index 1e26816f41..c4a2ae9f7f 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.assignment.pattern.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.assignment.pattern.scope
@@ -2,19 +2,19 @@
---
[Content] = 0:0-0:12
-0| { aaa: bbb } = ccc;
>------------<
+0| { aaa: bbb } = ccc;
[Removal] = 0:0-0:15
-0| { aaa: bbb } = ccc;
>---------------<
+0| { aaa: bbb } = ccc;
[Trailing delimiter] = 0:12-0:15
-0| { aaa: bbb } = ccc;
>---<
+0| { aaa: bbb } = ccc;
[Domain] = 0:0-0:19
-0| { aaa: bbb } = ccc;
>-------------------<
+0| { aaa: bbb } = ccc;
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.assignment.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.assignment.scope
index 0631628fcb..6cf46c5ce8 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.assignment.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.assignment.scope
@@ -2,19 +2,19 @@ aaa = bbb;
---
[Content] = 0:0-0:3
-0| aaa = bbb;
>---<
+0| aaa = bbb;
[Removal] = 0:0-0:6
-0| aaa = bbb;
>------<
+0| aaa = bbb;
[Trailing delimiter] = 0:3-0:6
-0| aaa = bbb;
>---<
+0| aaa = bbb;
[Domain] = 0:0-0:10
-0| aaa = bbb;
>----------<
+0| aaa = bbb;
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.class.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.class.scope
index 6c8f825b9b..428df96465 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.class.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.class.scope
@@ -4,26 +4,25 @@ class MyClass {
---
[Content] = 0:6-0:13
-0| class MyClass {
>-------<
+0| class MyClass {
[Removal] = 0:6-0:14
-0| class MyClass {
>--------<
+0| class MyClass {
[Leading delimiter] = 0:5-0:6
-0| class MyClass {
>-<
+0| class MyClass {
[Trailing delimiter] = 0:13-0:14
-0| class MyClass {
>-<
+0| class MyClass {
[Domain] = 0:0-2:1
-0| class MyClass {
>---------------
+0| class MyClass {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.field.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.field.scope
index 85f531b053..c913e7d6ec 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.field.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.field.scope
@@ -4,26 +4,25 @@ class MyClass {
---
[#1 Content] = 0:6-0:13
-0| class MyClass {
>-------<
+0| class MyClass {
[#1 Removal] = 0:6-0:14
-0| class MyClass {
>--------<
+0| class MyClass {
[#1 Leading delimiter] = 0:5-0:6
-0| class MyClass {
>-<
+0| class MyClass {
[#1 Trailing delimiter] = 0:13-0:14
-0| class MyClass {
>-<
+0| class MyClass {
[#1 Domain] = 0:0-2:1
-0| class MyClass {
>---------------
+0| class MyClass {
1| value = 0;
- ------------
2| }
-<
@@ -31,19 +30,19 @@ class MyClass {
[#2 Content] = 1:2-1:7
-1| value = 0;
>-----<
+1| value = 0;
[#2 Removal] = 1:2-1:10
-1| value = 0;
>--------<
+1| value = 0;
[#2 Trailing delimiter] = 1:7-1:10
-1| value = 0;
>---<
+1| value = 0;
[#2 Domain] = 1:2-1:12
-1| value = 0;
>----------<
+1| value = 0;
[#2 Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.foreach.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.foreach.scope
index 00a66b9f00..331df7f4de 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.foreach.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.foreach.scope
@@ -4,26 +4,25 @@ for (const item of items) {
---
[Content] = 0:11-0:15
-0| for (const item of items) {
>----<
+0| for (const item of items) {
[Removal] = 0:11-0:16
-0| for (const item of items) {
>-----<
+0| for (const item of items) {
[Leading delimiter] = 0:10-0:11
-0| for (const item of items) {
>-<
+0| for (const item of items) {
[Trailing delimiter] = 0:15-0:16
-0| for (const item of items) {
>-<
+0| for (const item of items) {
[Domain] = 0:0-2:1
-0| for (const item of items) {
>---------------------------
+0| for (const item of items) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.function.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.function.scope
index f2a9e5ea0b..92194c85e2 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.function.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.function.scope
@@ -5,18 +5,17 @@ function myFunk() {
[Content] =
[Removal] = 0:9-0:15
-0| function myFunk() {
>------<
+0| function myFunk() {
[Leading delimiter] = 0:8-0:9
-0| function myFunk() {
>-<
+0| function myFunk() {
[Domain] = 0:0-2:1
-0| function myFunk() {
>-------------------
+0| function myFunk() {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.variable.pattern.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.variable.pattern.scope
index 4bbf83df80..5b6f02cfa7 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.variable.pattern.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.variable.pattern.scope
@@ -2,23 +2,23 @@ const {aaa: bbb} = ccc;
---
[Content] = 0:6-0:16
-0| const {aaa: bbb} = ccc;
>----------<
+0| const {aaa: bbb} = ccc;
[Removal] = 0:0-0:19
-0| const {aaa: bbb} = ccc;
>-------------------<
+0| const {aaa: bbb} = ccc;
[Leading delimiter] = 0:5-0:6
-0| const {aaa: bbb} = ccc;
>-<
+0| const {aaa: bbb} = ccc;
[Trailing delimiter] = 0:16-0:17
-0| const {aaa: bbb} = ccc;
>-<
+0| const {aaa: bbb} = ccc;
[Domain] = 0:0-0:23
-0| const {aaa: bbb} = ccc;
>-----------------------<
+0| const {aaa: bbb} = ccc;
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.variable.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.variable.scope
index 5923a0157a..c9aed7af12 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.variable.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/name.variable.scope
@@ -2,23 +2,23 @@ const name = "Hello world";
---
[Content] = 0:6-0:10
-0| const name = "Hello world";
>----<
+0| const name = "Hello world";
[Removal] = 0:0-0:13
-0| const name = "Hello world";
>-------------<
+0| const name = "Hello world";
[Leading delimiter] = 0:5-0:6
-0| const name = "Hello world";
>-<
+0| const name = "Hello world";
[Trailing delimiter] = 0:10-0:11
-0| const name = "Hello world";
>-<
+0| const name = "Hello world";
[Domain] = 0:0-0:27
-0| const name = "Hello world";
>---------------------------<
+0| const name = "Hello world";
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction.method.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction.method.scope
index e27e640968..88b4fbcd67 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction.method.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction.method.scope
@@ -7,23 +7,21 @@ class MyClass {
[Content] =
[Domain] = 1:2-3:3
-1| myFunk() {
>----------
+1| myFunk() {
2|
-
3| }
---<
[Removal] = 1:0-3:3
-1| myFunk() {
>------------
+1| myFunk() {
2|
-
3| }
---<
[Leading delimiter] = 1:0-1:2
-1| myFunk() {
>--<
+1| myFunk() {
[Insertion delimiter] = "\n\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction.scope
index b0f16a02df..ec504028c3 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction.scope
@@ -6,10 +6,9 @@ function myFunk() {
[Content] =
[Removal] =
[Domain] = 0:0-2:1
-0| function myFunk() {
>-------------------
+0| function myFunk() {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction2.scope
index 8e21e902e0..816799f2de 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/namedFunction2.scope
@@ -6,10 +6,9 @@ const myFunk = function() {
[Content] =
[Removal] =
[Domain] = 0:0-2:1
-0| const myFunk = function() {
>---------------------------
+0| const myFunk = function() {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/regularExpression.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/regularExpression.scope
index 48e5c51a92..3e65ffe6fd 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/regularExpression.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/regularExpression.scope
@@ -4,7 +4,7 @@
[Content] =
[Removal] =
[Domain] = 0:0-0:8
-0| /^\w+$/g
>--------<
+0| /^\w+$/g
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/startTag.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/startTag.scope
index 1fd64adf6f..d3f5ce5ef8 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/startTag.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/startTag.scope
@@ -3,11 +3,11 @@
[Content] =
[Removal] = 0:0-0:15
-0|
>---------------<
+0|
[Domain] = 0:0-0:21
-0|
>---------------------<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.iteration.block.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.iteration.block.scope
index 20a4ec626d..5cde5b4e3f 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.iteration.block.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.iteration.block.scope
@@ -5,19 +5,17 @@ function foo() {
[#1 Range] =
[#1 Domain] = 0:0-2:1
-0| function foo() {
>----------------
+0| function foo() {
1|
-
2| }
-<
[#2 Range] =
[#2 Domain] = 0:16-2:0
-0| function foo() {
>
+0| function foo() {
1|
-
2| }
<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.iteration.document.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.iteration.document.scope
index 637148b86f..118c616ecf 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.iteration.document.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.iteration.document.scope
@@ -7,23 +7,19 @@ function foo() {
[#1 Range] =
[#1 Domain] = 0:0-4:1
-0| // Start
>--------
+0| // Start
1|
-
2| function foo() {
- ----------------
3|
-
4| }
-<
[#2 Range] =
[#2 Domain] = 2:16-4:0
-2| function foo() {
>
+2| function foo() {
3|
-
4| }
<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.scope
index 62a6b4fd53..8e3c576f0c 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/statement.scope
@@ -4,7 +4,7 @@ const value = 0;
[Content] =
[Removal] =
[Domain] = 0:0-0:16
-0| const value = 0;
>----------------<
+0| const value = 0;
[Insertion delimiter] = "\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.multiLine.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.multiLine.scope
index 1720e525c9..7ff38166b5 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.multiLine.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.multiLine.scope
@@ -5,8 +5,8 @@ world`
[Content] =
[Removal] =
[Domain] = 0:0-1:6
-0| `Hello
>------
+0| `Hello
1| world`
------<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.singleLine.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.singleLine.scope
index fdfeaf485b..4b26cf31b3 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.singleLine.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.singleLine.scope
@@ -4,7 +4,7 @@
[Content] =
[Removal] =
[Domain] = 0:0-0:13
-0| "Hello world"
>-------------<
+0| "Hello world"
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/switchStatementSubject.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/switchStatementSubject.scope
index cb799aa2ef..5098b692ac 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/switchStatementSubject.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/switchStatementSubject.scope
@@ -5,14 +5,13 @@ switch (value) {
[Content] =
[Removal] = 0:8-0:13
-0| switch (value) {
>-----<
+0| switch (value) {
[Domain] = 0:0-2:1
-0| switch (value) {
>----------------
+0| switch (value) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/tags.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/tags.scope
index 10ab2153df..680eb20ef9 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/tags.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/tags.scope
@@ -3,18 +3,18 @@
[.1 Content] =
[.1 Removal] = 0:0-0:5
-0| hello
>-----<
+0| hello
[.1 Insertion delimiter] = " "
[.2 Content] =
[.2 Removal] = 0:10-0:16
-0| hello
>------<
+0| hello
[.2 Insertion delimiter] = " "
[Domain] = 0:0-0:16
-0| hello
>----------------<
+0| hello
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.assignment.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.assignment.scope
index 5147ce1719..47eb8c0f75 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.assignment.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.assignment.scope
@@ -2,19 +2,19 @@ aaa = bbb;
---
[Content] = 0:6-0:9
-0| aaa = bbb;
>---<
+0| aaa = bbb;
[Removal] = 0:3-0:9
-0| aaa = bbb;
>------<
+0| aaa = bbb;
[Leading delimiter] = 0:3-0:6
-0| aaa = bbb;
>---<
+0| aaa = bbb;
[Domain] = 0:0-0:10
-0| aaa = bbb;
>----------<
+0| aaa = bbb;
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.attribute.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.attribute.scope
index 46e212934a..c9b9bfb687 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.attribute.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.attribute.scope
@@ -2,19 +2,19 @@
---
[Content] = 0:8-0:14
-0|
>------<
+0|
[Removal] = 0:7-0:14
-0|
>-------<
+0|
[Leading delimiter] = 0:7-0:8
-0|
>-<
+0|
[Domain] = 0:5-0:14
-0|
>---------<
+0|
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.field.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.field.scope
index 4582ac2a3d..3c396b9d74 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.field.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.field.scope
@@ -4,19 +4,19 @@ class MyClass {
---
[Content] = 1:10-1:11
-1| value = 0;
>-<
+1| value = 0;
[Removal] = 1:7-1:11
-1| value = 0;
>----<
+1| value = 0;
[Leading delimiter] = 1:7-1:10
-1| value = 0;
>---<
+1| value = 0;
[Domain] = 1:2-1:12
-1| value = 0;
>----------<
+1| value = 0;
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.foreach.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.foreach.scope
index 37f1cff24e..534e095b62 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.foreach.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.foreach.scope
@@ -4,22 +4,21 @@ for (const item of items) {
---
[Content] = 0:19-0:24
-0| for (const item of items) {
>-----<
+0| for (const item of items) {
[Removal] = 0:18-0:24
-0| for (const item of items) {
>------<
+0| for (const item of items) {
[Leading delimiter] = 0:18-0:19
-0| for (const item of items) {
>-<
+0| for (const item of items) {
[Domain] = 0:0-2:1
-0| for (const item of items) {
>---------------------------
+0| for (const item of items) {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.mapPair.iteration.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.mapPair.iteration.scope
index 50f1cdca8c..53deac1c0b 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.mapPair.iteration.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.mapPair.iteration.scope
@@ -3,11 +3,11 @@
[#1 Range] =
[#1 Domain] = 0:0-0:14
-0| { value: 123 }
>--------------<
+0| { value: 123 }
[#2 Range] =
[#2 Domain] = 0:1-0:13
-0| { value: 123 }
>------------<
+0| { value: 123 }
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.mapPair.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.mapPair.scope
index ef3761a512..80ac508b04 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.mapPair.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.mapPair.scope
@@ -2,19 +2,19 @@
---
[Content] = 0:9-0:12
-0| { value: 123 }
>---<
+0| { value: 123 }
[Removal] = 0:7-0:12
-0| { value: 123 }
>-----<
+0| { value: 123 }
[Leading delimiter] = 0:7-0:9
-0| { value: 123 }
>--<
+0| { value: 123 }
[Domain] = 0:2-0:12
-0| { value: 123 }
>----------<
+0| { value: 123 }
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.return.lambda.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.return.lambda.scope
index b3bb8427b1..8033661ff4 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.return.lambda.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.return.lambda.scope
@@ -2,19 +2,19 @@
---
[Content] = 0:6-0:7
-0| () => 0
>-<
+0| () => 0
[Removal] = 0:5-0:7
-0| () => 0
>--<
+0| () => 0
[Leading delimiter] = 0:5-0:6
-0| () => 0
>-<
+0| () => 0
[Domain] = 0:0-0:7
-0| () => 0
>-------<
+0| () => 0
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.return.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.return.scope
index 92d96256d5..ff89cb727b 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.return.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.return.scope
@@ -4,19 +4,19 @@ function myFunk() {
---
[Content] = 1:9-1:10
-1| return 0;
>-<
+1| return 0;
[Removal] = 1:8-1:10
-1| return 0;
>--<
+1| return 0;
[Leading delimiter] = 1:8-1:9
-1| return 0;
>-<
+1| return 0;
[Domain] = 1:2-1:11
-1| return 0;
>---------<
+1| return 0;
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.variable.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.variable.scope
index caa452d3f8..ff12557f65 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.variable.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/value.variable.scope
@@ -2,19 +2,19 @@ const name = "Hello world";
---
[Content] = 0:13-0:26
-0| const name = "Hello world";
>-------------<
+0| const name = "Hello world";
[Removal] = 0:10-0:26
-0| const name = "Hello world";
>----------------<
+0| const name = "Hello world";
[Leading delimiter] = 0:10-0:13
-0| const name = "Hello world";
>---<
+0| const name = "Hello world";
[Domain] = 0:0-0:27
-0| const name = "Hello world";
>---------------------------<
+0| const name = "Hello world";
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/json/comment.block.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/json/comment.block.scope
index c6263b704d..f8b38ca6af 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/json/comment.block.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/json/comment.block.scope
@@ -6,10 +6,9 @@
[Content] =
[Removal] =
[Domain] = 0:0-2:2
-0| /*
>--
+0| /*
1| Hello world
- -------------
2| */
--<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/json/comment.line.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/json/comment.line.scope
index 517cc2e6e2..7d1477b8a1 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/json/comment.line.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/json/comment.line.scope
@@ -4,7 +4,7 @@
[Content] =
[Removal] =
[Domain] = 0:0-0:14
-0| // Hello world
>--------------<
+0| // Hello world
[Insertion delimiter] = "\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.foreach.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.foreach.scope
index 183bba2818..6fe7a12c1a 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.foreach.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.foreach.scope
@@ -3,24 +3,24 @@ for item in items:
---
[Content] = 0:4-0:8
-0| for item in items:
>----<
+0| for item in items:
[Removal] = 0:4-0:9
-0| for item in items:
>-----<
+0| for item in items:
[Leading delimiter] = 0:3-0:4
-0| for item in items:
>-<
+0| for item in items:
[Trailing delimiter] = 0:8-0:9
-0| for item in items:
>-<
+0| for item in items:
[Domain] = 0:0-1:8
-0| for item in items:
>------------------
+0| for item in items:
1| pass
--------<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource.iteration.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource.iteration.scope
index f8eb5aaed8..47cb57159c 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource.iteration.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource.iteration.scope
@@ -3,17 +3,17 @@ with aaa, bbb as ccc:
---
[#1 Range] = 0:5-0:20
-0| with aaa, bbb as ccc:
>---------------<
+0| with aaa, bbb as ccc:
[#1 Domain] = 0:0-1:8
-0| with aaa, bbb as ccc:
>---------------------
+0| with aaa, bbb as ccc:
1| pass
--------<
[#2 Range] =
[#2 Domain] = 1:4-1:8
-1| pass
>----<
+1| pass
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource.scope
index 17d8834137..c8f1c1a311 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource.scope
@@ -3,20 +3,20 @@ with aaa as bbb:
---
[Content] = 0:12-0:15
-0| with aaa as bbb:
>---<
+0| with aaa as bbb:
[Removal] = 0:8-0:15
-0| with aaa as bbb:
>-------<
+0| with aaa as bbb:
[Leading delimiter] = 0:8-0:12
-0| with aaa as bbb:
>----<
+0| with aaa as bbb:
[Domain] = 0:0-1:8
-0| with aaa as bbb:
>----------------
+0| with aaa as bbb:
1| pass
--------<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource2.scope
index 814fedcfa4..c4dc614bf0 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource2.scope
@@ -3,70 +3,70 @@ with aaa, bbb as ccc:
---
[#1.1 Content] = 0:5-0:8
-0| with aaa, bbb as ccc:
>---<
+0| with aaa, bbb as ccc:
[#1.1 Removal] = 0:5-0:10
-0| with aaa, bbb as ccc:
>-----<
+0| with aaa, bbb as ccc:
[#1.1 Trailing delimiter] = 0:8-0:10
-0| with aaa, bbb as ccc:
>--<
+0| with aaa, bbb as ccc:
[#1.1 Insertion delimiter] = " "
[#1.2 Content] = 0:17-0:20
-0| with aaa, bbb as ccc:
>---<
+0| with aaa, bbb as ccc:
[#1.2 Removal] = 0:13-0:20
-0| with aaa, bbb as ccc:
>-------<
+0| with aaa, bbb as ccc:
[#1.2 Leading delimiter] = 0:13-0:17
-0| with aaa, bbb as ccc:
>----<
+0| with aaa, bbb as ccc:
[#1.2 Insertion delimiter] = " "
[#1 Domain] = 0:0-1:8
-0| with aaa, bbb as ccc:
>---------------------
+0| with aaa, bbb as ccc:
1| pass
--------<
[#2 Content] =
[#2 Domain] = 0:5-0:8
-0| with aaa, bbb as ccc:
>---<
+0| with aaa, bbb as ccc:
[#2 Removal] = 0:5-0:10
-0| with aaa, bbb as ccc:
>-----<
+0| with aaa, bbb as ccc:
[#2 Trailing delimiter] = 0:8-0:10
-0| with aaa, bbb as ccc:
>--<
+0| with aaa, bbb as ccc:
[#2 Insertion delimiter] = " "
[#3 Content] = 0:17-0:20
-0| with aaa, bbb as ccc:
>---<
+0| with aaa, bbb as ccc:
[#3 Removal] = 0:13-0:20
-0| with aaa, bbb as ccc:
>-------<
+0| with aaa, bbb as ccc:
[#3 Leading delimiter] = 0:13-0:17
-0| with aaa, bbb as ccc:
>----<
+0| with aaa, bbb as ccc:
[#3 Domain] = 0:10-0:20
-0| with aaa, bbb as ccc:
>----------<
+0| with aaa, bbb as ccc:
[#3 Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource3.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource3.scope
index 6b09252dac..944b7196b3 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource3.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/name.resource3.scope
@@ -3,73 +3,73 @@ with aaa as bbb, ccc as ddd:
---
[#1.1 Content] = 0:12-0:15
-0| with aaa as bbb, ccc as ddd:
>---<
+0| with aaa as bbb, ccc as ddd:
[#1.1 Removal] = 0:8-0:15
-0| with aaa as bbb, ccc as ddd:
>-------<
+0| with aaa as bbb, ccc as ddd:
[#1.1 Leading delimiter] = 0:8-0:12
-0| with aaa as bbb, ccc as ddd:
>----<
+0| with aaa as bbb, ccc as ddd:
[#1.1 Insertion delimiter] = " "
[#1.2 Content] = 0:24-0:27
-0| with aaa as bbb, ccc as ddd:
>---<
+0| with aaa as bbb, ccc as ddd:
[#1.2 Removal] = 0:20-0:27
-0| with aaa as bbb, ccc as ddd:
>-------<
+0| with aaa as bbb, ccc as ddd:
[#1.2 Leading delimiter] = 0:20-0:24
-0| with aaa as bbb, ccc as ddd:
>----<
+0| with aaa as bbb, ccc as ddd:
[#1.2 Insertion delimiter] = " "
[#1 Domain] = 0:0-1:8
-0| with aaa as bbb, ccc as ddd:
>----------------------------
+0| with aaa as bbb, ccc as ddd:
1| pass
--------<
[#2 Content] = 0:12-0:15
-0| with aaa as bbb, ccc as ddd:
>---<
+0| with aaa as bbb, ccc as ddd:
[#2 Removal] = 0:8-0:15
-0| with aaa as bbb, ccc as ddd:
>-------<
+0| with aaa as bbb, ccc as ddd:
[#2 Leading delimiter] = 0:8-0:12
-0| with aaa as bbb, ccc as ddd:
>----<
+0| with aaa as bbb, ccc as ddd:
[#2 Domain] = 0:5-0:15
-0| with aaa as bbb, ccc as ddd:
>----------<
+0| with aaa as bbb, ccc as ddd:
[#2 Insertion delimiter] = " "
[#3 Content] = 0:24-0:27
-0| with aaa as bbb, ccc as ddd:
>---<
+0| with aaa as bbb, ccc as ddd:
[#3 Removal] = 0:20-0:27
-0| with aaa as bbb, ccc as ddd:
>-------<
+0| with aaa as bbb, ccc as ddd:
[#3 Leading delimiter] = 0:20-0:24
-0| with aaa as bbb, ccc as ddd:
>----<
+0| with aaa as bbb, ccc as ddd:
[#3 Domain] = 0:17-0:27
-0| with aaa as bbb, ccc as ddd:
>----------<
+0| with aaa as bbb, ccc as ddd:
[#3 Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.foreach.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.foreach.scope
index 611e59af23..2438c8f774 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.foreach.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.foreach.scope
@@ -3,20 +3,20 @@ for item in items:
---
[Content] = 0:12-0:17
-0| for item in items:
>-----<
+0| for item in items:
[Removal] = 0:11-0:17
-0| for item in items:
>------<
+0| for item in items:
[Leading delimiter] = 0:11-0:12
-0| for item in items:
>-<
+0| for item in items:
[Domain] = 0:0-1:8
-0| for item in items:
>------------------
+0| for item in items:
1| pass
--------<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.iteration.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.iteration.scope
index f8eb5aaed8..47cb57159c 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.iteration.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.iteration.scope
@@ -3,17 +3,17 @@ with aaa, bbb as ccc:
---
[#1 Range] = 0:5-0:20
-0| with aaa, bbb as ccc:
>---------------<
+0| with aaa, bbb as ccc:
[#1 Domain] = 0:0-1:8
-0| with aaa, bbb as ccc:
>---------------------
+0| with aaa, bbb as ccc:
1| pass
--------<
[#2 Range] =
[#2 Domain] = 1:4-1:8
-1| pass
>----<
+1| pass
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.iteration2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.iteration2.scope
index 3231341249..0be71b66d9 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.iteration2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.iteration2.scope
@@ -6,31 +6,28 @@ ddd = eee
---
[#1 Range] = 0:5-0:8
-0| with aaa:
>---<
+0| with aaa:
[#1 Domain] = 0:0-1:8
-0| with aaa:
>---------
+0| with aaa:
1| pass
--------<
[#2 Range] =
[#2 Domain] = 0:0-4:9
-0| with aaa:
>---------
+0| with aaa:
1| pass
- --------
2|
-
3| bbb = ccc
- ---------
4| ddd = eee
---------<
[#3 Range] =
[#3 Domain] = 1:4-1:8
-1| pass
>----<
+1| pass
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.scope
index a5dd036e23..03500511ea 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource.scope
@@ -3,20 +3,20 @@ with aaa:
---
[Content] = 0:5-0:8
-0| with aaa:
>---<
+0| with aaa:
[Removal] = 0:4-0:8
-0| with aaa:
>----<
+0| with aaa:
[Leading delimiter] = 0:4-0:5
-0| with aaa:
>-<
+0| with aaa:
[Domain] = 0:0-1:8
-0| with aaa:
>---------
+0| with aaa:
1| pass
--------<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource2.scope
index 7a4e1450a3..0e17a38125 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource2.scope
@@ -3,67 +3,67 @@ with aaa, bbb:
---
[#1.1 Content] = 0:5-0:8
-0| with aaa, bbb:
>---<
+0| with aaa, bbb:
[#1.1 Removal] = 0:5-0:10
-0| with aaa, bbb:
>-----<
+0| with aaa, bbb:
[#1.1 Trailing delimiter] = 0:8-0:10
-0| with aaa, bbb:
>--<
+0| with aaa, bbb:
[#1.1 Insertion delimiter] = " "
[#1.2 Content] = 0:10-0:13
-0| with aaa, bbb:
>---<
+0| with aaa, bbb:
[#1.2 Removal] = 0:8-0:13
-0| with aaa, bbb:
>-----<
+0| with aaa, bbb:
[#1.2 Leading delimiter] = 0:8-0:10
-0| with aaa, bbb:
>--<
+0| with aaa, bbb:
[#1.2 Insertion delimiter] = " "
[#1 Domain] = 0:0-1:8
-0| with aaa, bbb:
>--------------
+0| with aaa, bbb:
1| pass
--------<
[#2 Content] =
[#2 Domain] = 0:5-0:8
-0| with aaa, bbb:
>---<
+0| with aaa, bbb:
[#2 Removal] = 0:5-0:10
-0| with aaa, bbb:
>-----<
+0| with aaa, bbb:
[#2 Trailing delimiter] = 0:8-0:10
-0| with aaa, bbb:
>--<
+0| with aaa, bbb:
[#2 Insertion delimiter] = " "
[#3 Content] =
[#3 Domain] = 0:10-0:13
-0| with aaa, bbb:
>---<
+0| with aaa, bbb:
[#3 Removal] = 0:8-0:13
-0| with aaa, bbb:
>-----<
+0| with aaa, bbb:
[#3 Leading delimiter] = 0:8-0:10
-0| with aaa, bbb:
>--<
+0| with aaa, bbb:
[#3 Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource3.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource3.scope
index 78a3f0d13d..e8a7708759 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource3.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource3.scope
@@ -3,20 +3,20 @@ with aaa as bbb:
---
[Content] = 0:5-0:8
-0| with aaa as bbb:
>---<
+0| with aaa as bbb:
[Removal] = 0:5-0:12
-0| with aaa as bbb:
>-------<
+0| with aaa as bbb:
[Trailing delimiter] = 0:8-0:12
-0| with aaa as bbb:
>----<
+0| with aaa as bbb:
[Domain] = 0:0-1:8
-0| with aaa as bbb:
>----------------
+0| with aaa as bbb:
1| pass
--------<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource4.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource4.scope
index 23a36a6039..467cfef917 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource4.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource4.scope
@@ -3,70 +3,70 @@ with aaa, bbb as ccc:
---
[#1.1 Content] = 0:5-0:8
-0| with aaa, bbb as ccc:
>---<
+0| with aaa, bbb as ccc:
[#1.1 Removal] = 0:5-0:10
-0| with aaa, bbb as ccc:
>-----<
+0| with aaa, bbb as ccc:
[#1.1 Trailing delimiter] = 0:8-0:10
-0| with aaa, bbb as ccc:
>--<
+0| with aaa, bbb as ccc:
[#1.1 Insertion delimiter] = " "
[#1.2 Content] = 0:10-0:13
-0| with aaa, bbb as ccc:
>---<
+0| with aaa, bbb as ccc:
[#1.2 Removal] = 0:10-0:17
-0| with aaa, bbb as ccc:
>-------<
+0| with aaa, bbb as ccc:
[#1.2 Trailing delimiter] = 0:13-0:17
-0| with aaa, bbb as ccc:
>----<
+0| with aaa, bbb as ccc:
[#1.2 Insertion delimiter] = " "
[#1 Domain] = 0:0-1:8
-0| with aaa, bbb as ccc:
>---------------------
+0| with aaa, bbb as ccc:
1| pass
--------<
[#2 Content] =
[#2 Domain] = 0:5-0:8
-0| with aaa, bbb as ccc:
>---<
+0| with aaa, bbb as ccc:
[#2 Removal] = 0:5-0:10
-0| with aaa, bbb as ccc:
>-----<
+0| with aaa, bbb as ccc:
[#2 Trailing delimiter] = 0:8-0:10
-0| with aaa, bbb as ccc:
>--<
+0| with aaa, bbb as ccc:
[#2 Insertion delimiter] = " "
[#3 Content] = 0:10-0:13
-0| with aaa, bbb as ccc:
>---<
+0| with aaa, bbb as ccc:
[#3 Removal] = 0:10-0:17
-0| with aaa, bbb as ccc:
>-------<
+0| with aaa, bbb as ccc:
[#3 Trailing delimiter] = 0:13-0:17
-0| with aaa, bbb as ccc:
>----<
+0| with aaa, bbb as ccc:
[#3 Domain] = 0:10-0:20
-0| with aaa, bbb as ccc:
>----------<
+0| with aaa, bbb as ccc:
[#3 Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource5.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource5.scope
index 89bd299ecb..435ff6a501 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource5.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.resource5.scope
@@ -3,73 +3,73 @@ with aaa as bbb, ccc as ddd:
---
[#1.1 Content] = 0:5-0:8
-0| with aaa as bbb, ccc as ddd:
>---<
+0| with aaa as bbb, ccc as ddd:
[#1.1 Removal] = 0:5-0:12
-0| with aaa as bbb, ccc as ddd:
>-------<
+0| with aaa as bbb, ccc as ddd:
[#1.1 Trailing delimiter] = 0:8-0:12
-0| with aaa as bbb, ccc as ddd:
>----<
+0| with aaa as bbb, ccc as ddd:
[#1.1 Insertion delimiter] = " "
[#1.2 Content] = 0:17-0:20
-0| with aaa as bbb, ccc as ddd:
>---<
+0| with aaa as bbb, ccc as ddd:
[#1.2 Removal] = 0:17-0:24
-0| with aaa as bbb, ccc as ddd:
>-------<
+0| with aaa as bbb, ccc as ddd:
[#1.2 Trailing delimiter] = 0:20-0:24
-0| with aaa as bbb, ccc as ddd:
>----<
+0| with aaa as bbb, ccc as ddd:
[#1.2 Insertion delimiter] = " "
[#1 Domain] = 0:0-1:8
-0| with aaa as bbb, ccc as ddd:
>----------------------------
+0| with aaa as bbb, ccc as ddd:
1| pass
--------<
[#2 Content] = 0:5-0:8
-0| with aaa as bbb, ccc as ddd:
>---<
+0| with aaa as bbb, ccc as ddd:
[#2 Removal] = 0:5-0:12
-0| with aaa as bbb, ccc as ddd:
>-------<
+0| with aaa as bbb, ccc as ddd:
[#2 Trailing delimiter] = 0:8-0:12
-0| with aaa as bbb, ccc as ddd:
>----<
+0| with aaa as bbb, ccc as ddd:
[#2 Domain] = 0:5-0:15
-0| with aaa as bbb, ccc as ddd:
>----------<
+0| with aaa as bbb, ccc as ddd:
[#2 Insertion delimiter] = " "
[#3 Content] = 0:17-0:20
-0| with aaa as bbb, ccc as ddd:
>---<
+0| with aaa as bbb, ccc as ddd:
[#3 Removal] = 0:17-0:24
-0| with aaa as bbb, ccc as ddd:
>-------<
+0| with aaa as bbb, ccc as ddd:
[#3 Trailing delimiter] = 0:20-0:24
-0| with aaa as bbb, ccc as ddd:
>----<
+0| with aaa as bbb, ccc as ddd:
[#3 Domain] = 0:17-0:27
-0| with aaa as bbb, ccc as ddd:
>----------<
+0| with aaa as bbb, ccc as ddd:
[#3 Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.yield.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.yield.scope
index 1935369c84..bcf06f46ce 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.yield.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/python/value.yield.scope
@@ -3,19 +3,19 @@ def aaa():
---
[Content] = 1:10-1:13
-1| yield bbb
>---<
+1| yield bbb
[Removal] = 1:9-1:13
-1| yield bbb
>----<
+1| yield bbb
[Leading delimiter] = 1:9-1:10
-1| yield bbb
>-<
+1| yield bbb
[Domain] = 1:4-1:13
-1| yield bbb
>---------<
+1| yield bbb
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/talon/command.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/talon/command.scope
index 36e18a5da3..a9db1a7118 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/talon/command.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/talon/command.scope
@@ -5,13 +5,13 @@ press {user.key}:
[Content] =
[Removal] =
[Domain] = 0:0-1:12
-0| press {user.key}:
>-----------------
+0| press {user.key}:
1| key(key)
------------<
[Interior] = 1:4-1:12
-1| key(key)
>--------<
+1| key(key)
[Insertion delimiter] = "\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/character.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/character.scope
index 92ce8be6f4..ce61df103a 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/character.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/character.scope
@@ -4,8 +4,8 @@ aaa
[#1 Content] =
[#1 Removal] =
[#1 Domain] = 0:0-0:1
-0| aaa
>-<
+0| aaa
[#1 Insertion delimiter] = ""
@@ -13,8 +13,8 @@ aaa
[#2 Content] =
[#2 Removal] =
[#2 Domain] = 0:1-0:2
-0| aaa
>-<
+0| aaa
[#2 Insertion delimiter] = ""
@@ -22,7 +22,7 @@ aaa
[#3 Content] =
[#3 Removal] =
[#3 Domain] = 0:2-0:3
-0| aaa
>-<
+0| aaa
[#3 Insertion delimiter] = ""
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/document.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/document.scope
index 49d821d32c..32a27791d8 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/document.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/document.scope
@@ -10,30 +10,22 @@ ccc
[Content] =
[Removal] =
[Domain] = 0:0-6:0
-0|
>
+0|
1| aaa
- -----
2|
-
3| bbb
- ---
4|
-
5| ccc
- ---
6|
<
[Interior] = 1:2-5:3
-1| aaa
>---
+1| aaa
2|
-
3| bbb
- ---
4|
-
5| ccc
---<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/identifier.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/identifier.scope
index 5eadb43a7e..8d3c33198b 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/identifier.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/identifier.scope
@@ -4,7 +4,7 @@
[Content] =
[Removal] =
[Domain] = 0:1-0:4
-0| (foo)
>---<
+0| (foo)
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/line.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/line.scope
index 61e4b32f55..5dabe4ab1b 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/line.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/line.scope
@@ -4,7 +4,7 @@ aaa
[Content] =
[Removal] =
[Domain] = 0:0-0:3
-0| aaa
>---<
+0| aaa
[Insertion delimiter] = "\n"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/line2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/line2.scope
index 4c5e4d85f9..dfee2c5288 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/line2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/line2.scope
@@ -5,18 +5,18 @@ aaa
[#1 Content] =
[#1 Domain] = 0:0-0:0
-0|
><
+0|
[#1 Removal] = 0:0-1:0
-0|
>
+0|
1| aaa
<
[#1 Trailing delimiter] = 0:0-1:0
-0|
>
+0|
1| aaa
<
@@ -25,24 +25,24 @@ aaa
[#2 Content] =
[#2 Domain] = 1:0-1:3
-1| aaa
>---<
+1| aaa
[#2 Removal] = 1:0-2:0
-1| aaa
>---
+1| aaa
2|
<
[#2 Leading delimiter] = 0:0-1:0
-0|
>
+0|
1| aaa
<
[#2 Trailing delimiter] = 1:3-2:0
-1| aaa
>
+1| aaa
2|
<
@@ -51,18 +51,18 @@ aaa
[#3 Content] =
[#3 Domain] = 2:0-2:0
-2|
><
+2|
[#3 Removal] = 1:3-2:0
-1| aaa
>
+1| aaa
2|
<
[#3 Leading delimiter] = 1:3-2:0
-1| aaa
>
+1| aaa
2|
<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/nonWhitespaceSequence.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/nonWhitespaceSequence.scope
index 6a54cce208..f0dd953e12 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/nonWhitespaceSequence.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/nonWhitespaceSequence.scope
@@ -3,15 +3,15 @@
[Content] =
[Domain] = 0:1-0:16
-0| b.c(?!å_*/\)|d4
>---------------<
+0| b.c(?!å_*/\)|d4
[Removal] = 0:0-0:16
-0| b.c(?!å_*/\)|d4
>----------------<
+0| b.c(?!å_*/\)|d4
[Leading delimiter] = 0:0-0:1
-0| b.c(?!å_*/\)|d4
>-<
+0| b.c(?!å_*/\)|d4
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/paragraph.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/paragraph.scope
index 228b87ac8a..629d5796ce 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/paragraph.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/paragraph.scope
@@ -6,36 +6,34 @@ bbb
[Content] =
[Domain] = 1:0-2:3
-1| aaa
>---
+1| aaa
2| bbb
---<
[Removal] = 0:0-3:0
-0|
>
+0|
1| aaa
- ---
2| bbb
- ---
3|
<
[Leading delimiter: Content] = 0:0-0:0
-0|
><
-[Leading delimiter: Removal] = 0:0-1:0
0|
+[Leading delimiter: Removal] = 0:0-1:0
>
+0|
1| aaa
<
[Trailing delimiter: Content] = 3:0-3:0
-3|
><
+3|
[Trailing delimiter: Removal] = 2:3-3:0
-2| bbb
>
+2| bbb
3|
<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/sentence.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/sentence.scope
index e646ba516c..4db45fece0 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/sentence.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/sentence.scope
@@ -4,7 +4,7 @@ This is a sentence.
[Content] =
[Removal] =
[Domain] = 0:0-0:19
-0| This is a sentence.
>-------------------<
+0| This is a sentence.
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/token.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/token.scope
index b40804aff9..a889537b1e 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/token.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/token.scope
@@ -3,19 +3,19 @@
[Content] =
[Domain] = 0:2-0:5
-0| aaa
>---<
+0| aaa
[Removal] = 0:0-0:7
-0| aaa
>-------<
+0| aaa
[Leading delimiter] = 0:0-0:2
-0| aaa
>--<
+0| aaa
[Trailing delimiter] = 0:5-0:7
-0| aaa
>--<
+0| aaa
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/url.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/url.scope
index 5a8f9c8ca9..fe5c6beffd 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/url.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/url.scope
@@ -4,7 +4,7 @@ https://www.cursorless.org
[Content] =
[Removal] =
[Domain] = 0:0-0:26
-0| https://www.cursorless.org
>--------------------------<
+0| https://www.cursorless.org
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/word.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/word.scope
index c8b08df664..fc08b5125c 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/word.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/word.scope
@@ -3,31 +3,31 @@ aaa_bbb
[#1 Content] =
[#1 Domain] = 0:0-0:3
-0| aaa_bbb
>---<
+0| aaa_bbb
[#1 Removal] = 0:0-0:4
-0| aaa_bbb
>----<
+0| aaa_bbb
[#1 Trailing delimiter] = 0:3-0:4
-0| aaa_bbb
>-<
+0| aaa_bbb
[#1 Insertion delimiter] = "_"
[#2 Content] =
[#2 Domain] = 0:4-0:7
-0| aaa_bbb
>---<
+0| aaa_bbb
[#2 Removal] = 0:3-0:7
-0| aaa_bbb
>----<
+0| aaa_bbb
[#2 Leading delimiter] = 0:3-0:4
-0| aaa_bbb
>-<
+0| aaa_bbb
[#2 Insertion delimiter] = "_"
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/word2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/word2.scope
index a94f3eb776..713a90d784 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/word2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/textual/word2.scope
@@ -4,8 +4,8 @@ aaaBbb
[#1 Content] =
[#1 Removal] =
[#1 Domain] = 0:0-0:3
-0| aaaBbb
>---<
+0| aaaBbb
[#1 Insertion delimiter] = ""
@@ -13,7 +13,7 @@ aaaBbb
[#2 Content] =
[#2 Removal] =
[#2 Domain] = 0:3-0:6
-0| aaaBbb
>---<
+0| aaaBbb
[#2 Insertion delimiter] = ""
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/name.field.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/name.field.scope
index 89a25f3e2f..608eebdd4b 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/name.field.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/name.field.scope
@@ -7,32 +7,28 @@ class Aaa {
---
[#1 Content] = 0:6-0:9
-0| class Aaa {
>---<
+0| class Aaa {
[#1 Removal] = 0:6-0:10
-0| class Aaa {
>----<
+0| class Aaa {
[#1 Leading delimiter] = 0:5-0:6
-0| class Aaa {
>-<
+0| class Aaa {
[#1 Trailing delimiter] = 0:9-0:10
-0| class Aaa {
>-<
+0| class Aaa {
[#1 Domain] = 0:0-5:1
-0| class Aaa {
>-----------
+0| class Aaa {
1| bbb!: string = undefined;
- -----------------------------
2| ccc: string = undefined;
- ----------------------------
3| ddd = undefined;
- --------------------
4| private eee!: string = undefined;
- -------------------------------------
5| }
-<
@@ -41,73 +37,73 @@ class Aaa {
[#2 Content] =
[#2 Removal] = 1:4-1:7
-1| bbb!: string = undefined;
>---<
+1| bbb!: string = undefined;
[#2 Leading delimiter] = 1:0-1:4
-1| bbb!: string = undefined;
>----<
+1| bbb!: string = undefined;
[#2 Domain] = 1:4-1:29
-1| bbb!: string = undefined;
>-------------------------<
+1| bbb!: string = undefined;
[#2 Insertion delimiter] = " "
[#3 Content] = 2:4-2:7
-2| ccc: string = undefined;
>---<
+2| ccc: string = undefined;
[#3 Removal] = 2:0-2:7
-2| ccc: string = undefined;
>-------<
+2| ccc: string = undefined;
[#3 Leading delimiter] = 2:0-2:4
-2| ccc: string = undefined;
>----<
+2| ccc: string = undefined;
[#3 Domain] = 2:4-2:28
-2| ccc: string = undefined;
>------------------------<
+2| ccc: string = undefined;
[#3 Insertion delimiter] = " "
[#4 Content] = 3:4-3:7
-3| ddd = undefined;
>---<
+3| ddd = undefined;
[#4 Removal] = 3:4-3:8
-3| ddd = undefined;
>----<
+3| ddd = undefined;
[#4 Leading delimiter] = 3:0-3:4
-3| ddd = undefined;
>----<
+3| ddd = undefined;
[#4 Trailing delimiter] = 3:7-3:8
-3| ddd = undefined;
>-<
+3| ddd = undefined;
[#4 Domain] = 3:4-3:20
-3| ddd = undefined;
>----------------<
+3| ddd = undefined;
[#4 Insertion delimiter] = " "
[#5 Content] =
[#5 Removal] = 4:12-4:15
-4| private eee!: string = undefined;
>---<
+4| private eee!: string = undefined;
[#5 Leading delimiter] = 4:11-4:12
-4| private eee!: string = undefined;
>-<
+4| private eee!: string = undefined;
[#5 Domain] = 4:4-4:37
-4| private eee!: string = undefined;
>---------------------------------<
+4| private eee!: string = undefined;
[#5 Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.alias.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.alias.scope
index 4218e3f734..8fe8c37785 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.alias.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.alias.scope
@@ -4,7 +4,7 @@ type Aaa = Bbb;
[Content] =
[Removal] =
[Domain] = 0:0-0:15
-0| type Aaa = Bbb;
>---------------<
+0| type Aaa = Bbb;
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.alias2.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.alias2.scope
index 5fc0ed665b..9dbeaf95ed 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.alias2.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.alias2.scope
@@ -4,7 +4,7 @@ export type Aaa = Bbb;
[Content] =
[Removal] =
[Domain] = 0:0-0:22
-0| export type Aaa = Bbb;
>----------------------<
+0| export type Aaa = Bbb;
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.field.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.field.scope
index 0de967cd86..e2ec66651e 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.field.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.field.scope
@@ -8,95 +8,95 @@ class Aaa {
---
[#1 Content] = 1:10-1:16
-1| bbb!: string = undefined;
>------<
+1| bbb!: string = undefined;
[#1 Removal] = 1:7-1:16
-1| bbb!: string = undefined;
>---------<
+1| bbb!: string = undefined;
[#1 Leading delimiter] = 1:7-1:10
-1| bbb!: string = undefined;
>---<
+1| bbb!: string = undefined;
[#1 Domain] = 1:4-1:29
-1| bbb!: string = undefined;
>-------------------------<
+1| bbb!: string = undefined;
[#1 Insertion delimiter] = " "
[#2 Content] = 2:9-2:15
-2| ccc: string = undefined;
>------<
+2| ccc: string = undefined;
[#2 Removal] = 2:7-2:15
-2| ccc: string = undefined;
>--------<
+2| ccc: string = undefined;
[#2 Leading delimiter] = 2:7-2:9
-2| ccc: string = undefined;
>--<
+2| ccc: string = undefined;
[#2 Domain] = 2:4-2:28
-2| ccc: string = undefined;
>------------------------<
+2| ccc: string = undefined;
[#2 Insertion delimiter] = " "
[#3 Content] = 3:18-3:24
-3| private eee!: string = undefined;
>------<
+3| private eee!: string = undefined;
[#3 Removal] = 3:15-3:24
-3| private eee!: string = undefined;
>---------<
+3| private eee!: string = undefined;
[#3 Leading delimiter] = 3:15-3:18
-3| private eee!: string = undefined;
>---<
+3| private eee!: string = undefined;
[#3 Domain] = 3:4-3:37
-3| private eee!: string = undefined;
>---------------------------------<
+3| private eee!: string = undefined;
[#3 Insertion delimiter] = " "
[#4 Content] = 4:9-4:15
-4| eee: string;
>------<
+4| eee: string;
[#4 Removal] = 4:7-4:15
-4| eee: string;
>--------<
+4| eee: string;
[#4 Leading delimiter] = 4:7-4:9
-4| eee: string;
>--<
+4| eee: string;
[#4 Domain] = 4:4-4:16
-4| eee: string;
>------------<
+4| eee: string;
[#4 Insertion delimiter] = " "
[#5 Content] = 5:10-5:16
-5| fff!: string;
>------<
+5| fff!: string;
[#5 Removal] = 5:7-5:16
-5| fff!: string;
>---------<
+5| fff!: string;
[#5 Leading delimiter] = 5:7-5:10
-5| fff!: string;
>---<
+5| fff!: string;
[#5 Domain] = 5:4-5:17
-5| fff!: string;
>-------------<
+5| fff!: string;
[#5 Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.formalParameter.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.formalParameter.scope
index d87194715e..b315a23c1b 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.formalParameter.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.formalParameter.scope
@@ -4,19 +4,19 @@ function myFunk(value: number) {
---
[Content] = 0:23-0:29
-0| function myFunk(value: number) {
>------<
+0| function myFunk(value: number) {
[Removal] = 0:21-0:29
-0| function myFunk(value: number) {
>--------<
+0| function myFunk(value: number) {
[Leading delimiter] = 0:21-0:23
-0| function myFunk(value: number) {
>--<
+0| function myFunk(value: number) {
[Domain] = 0:16-0:29
-0| function myFunk(value: number) {
>-------------<
+0| function myFunk(value: number) {
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.interface.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.interface.scope
index ecfb24b81d..53c582acfa 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.interface.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.interface.scope
@@ -6,10 +6,9 @@ interface MyType {
[Content] =
[Removal] =
[Domain] = 0:0-2:1
-0| interface MyType {
>------------------
+0| interface MyType {
1|
-
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.return.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.return.scope
index c8aeca6b34..3070660e15 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.return.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.return.scope
@@ -4,22 +4,21 @@ function myFunk(): number {
---
[Content] = 0:19-0:25
-0| function myFunk(): number {
>------<
+0| function myFunk(): number {
[Removal] = 0:17-0:25
-0| function myFunk(): number {
>--------<
+0| function myFunk(): number {
[Leading delimiter] = 0:17-0:19
-0| function myFunk(): number {
>--<
+0| function myFunk(): number {
[Domain] = 0:0-2:1
-0| function myFunk(): number {
>---------------------------
+0| function myFunk(): number {
1| return 0;
- -----------
2| }
-<
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.variable.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.variable.scope
index ce7733b5ac..92b7088992 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.variable.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/type.variable.scope
@@ -2,23 +2,23 @@ const value: number = 0;
---
[Content] = 0:13-0:19
-0| const value: number = 0;
>------<
+0| const value: number = 0;
[Removal] = 0:11-0:19
-0| const value: number = 0;
>--------<
+0| const value: number = 0;
[Leading delimiter] = 0:12-0:13
-0| const value: number = 0;
>-<
+0| const value: number = 0;
[Trailing delimiter] = 0:19-0:20
-0| const value: number = 0;
>-<
+0| const value: number = 0;
[Domain] = 0:0-0:24
-0| const value: number = 0;
>------------------------<
+0| const value: number = 0;
[Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/value.field.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/value.field.scope
index 6f471df093..85c26dd946 100644
--- a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/value.field.scope
+++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/typescript/value.field.scope
@@ -7,76 +7,76 @@ class Aaa {
---
[#1 Content] = 1:19-1:28
-1| bbb!: string = undefined;
>---------<
+1| bbb!: string = undefined;
[#1 Removal] = 1:16-1:28
-1| bbb!: string = undefined;
>------------<
+1| bbb!: string = undefined;
[#1 Leading delimiter] = 1:16-1:19
-1| bbb!: string = undefined;
>---<
+1| bbb!: string = undefined;
[#1 Domain] = 1:4-1:29
-1| bbb!: string = undefined;
>-------------------------<
+1| bbb!: string = undefined;
[#1 Insertion delimiter] = " "
[#2 Content] = 2:18-2:27
-2| ccc: string = undefined;
>---------<
+2| ccc: string = undefined;
[#2 Removal] = 2:15-2:27
-2| ccc: string = undefined;
>------------<
+2| ccc: string = undefined;
[#2 Leading delimiter] = 2:15-2:18
-2| ccc: string = undefined;
>---<
+2| ccc: string = undefined;
[#2 Domain] = 2:4-2:28
-2| ccc: string = undefined;
>------------------------<
+2| ccc: string = undefined;
[#2 Insertion delimiter] = " "
[#3 Content] = 3:10-3:19
-3| ddd = undefined;
>---------<
+3| ddd = undefined;
[#3 Removal] = 3:7-3:19
-3| ddd = undefined;
>------------<
+3| ddd = undefined;
[#3 Leading delimiter] = 3:7-3:10
-3| ddd = undefined;
>---<
+3| ddd = undefined;
[#3 Domain] = 3:4-3:20
-3| ddd = undefined;
>----------------<
+3| ddd = undefined;
[#3 Insertion delimiter] = " "
[#4 Content] = 4:27-4:36
-4| private eee!: string = undefined;
>---------<
+4| private eee!: string = undefined;
[#4 Removal] = 4:24-4:36
-4| private eee!: string = undefined;
>------------<
+4| private eee!: string = undefined;
[#4 Leading delimiter] = 4:24-4:27
-4| private eee!: string = undefined;
>---<
+4| private eee!: string = undefined;
[#4 Domain] = 4:4-4:37
-4| private eee!: string = undefined;
>---------------------------------<
+4| private eee!: string = undefined;
[#4 Insertion delimiter] = " "
diff --git a/packages/cursorless-vscode-e2e/src/suite/serializeTargetRange.ts b/packages/cursorless-vscode-e2e/src/suite/serializeTargetRange.ts
index b0cdc4abe8..20b05af54b 100644
--- a/packages/cursorless-vscode-e2e/src/suite/serializeTargetRange.ts
+++ b/packages/cursorless-vscode-e2e/src/suite/serializeTargetRange.ts
@@ -35,35 +35,31 @@ export function serializeTargetRange(
const { start, end } = range;
const lines: string[] = [];
- codeLines.forEach((codeLine, lineNumber) => {
- let annotationLine: string | undefined;
- if (lineNumber === start.line) {
- const prefix = fill(" ", start.character + 2) + ">";
- if (start.line === end.line) {
- annotationLine =
- prefix + fill("-", end.character - start.character) + "<";
- } else {
- annotationLine = prefix + fill("-", codeLine.length - start.character);
- }
- } else if (lineNumber > start.line && lineNumber < end.line) {
- if (codeLine.length > 0) {
- annotationLine = " " + fill("-", codeLine.length);
- } else {
- annotationLine = "";
- }
- } else if (lineNumber === end.line) {
- annotationLine = " " + fill("-", end.character) + "<";
- }
+ // Add start of range marker above the first code line
+ const prefix = fill(" ", start.character + 2) + ">";
+ if (range.isSingleLine) {
+ lines.push(prefix + fill("-", end.character - start.character) + "<");
+ } else {
+ lines.push(
+ prefix + fill("-", codeLines[start.line].length - start.character),
+ );
+ }
- if (annotationLine != null) {
- // Only output anything if there is an annotation line
- lines.push(
- // Output the line itself, prefixed by `n| `, eg `3| const foo = "bar"`
- codeLine.length > 0 ? `${lineNumber}| ${codeLine}` : `${lineNumber}|`,
- annotationLine,
- );
- }
- });
+ // Output the range with each line prefixed by `n| `, eg:
+ // `3| const foo = // "bar"`
+ for (let lineNumber = start.line; lineNumber <= end.line; ++lineNumber) {
+ const codeLine = codeLines[lineNumber]!;
+
+ lines.push(
+ codeLine.length > 0 ? `${lineNumber}| ${codeLine}` : `${lineNumber}|`,
+ );
+ }
+
+ // Add end of range marker below the last code line (if this was a multiline
+ // range)
+ if (!range.isSingleLine) {
+ lines.push(" " + fill("-", end.character) + "<");
+ }
return lines.join("\n");
}