Skip to content

Commit 585c852

Browse files
authored
Fix typescript field removal ranges (#2237)
## Checklist - [x] I have added [tests](https://www.cursorless.org/docs/contributing/test-case-recorder/) - [-] I have updated the [docs](https://github.com/cursorless-dev/cursorless/tree/main/docs) and [cheatsheet](https://github.com/cursorless-dev/cursorless/tree/main/cursorless-talon/src/cheatsheet) - [-] I have not broken the cheatsheet
1 parent bfbe85b commit 585c852

File tree

5 files changed

+306
-17
lines changed

5 files changed

+306
-17
lines changed

packages/common/src/scopeSupportFacets/typescript.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ export const typescriptScopeSupport: LanguageScopeSupportFacetMap = {
1414
"type.field": supported,
1515
"type.interface": supported,
1616
"type.alias": supported,
17+
"name.field": supported,
18+
"value.field": supported,
1719
};
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
class Aaa {
2+
bbb!: string = undefined;
3+
ccc: string = undefined;
4+
ddd = undefined;
5+
private eee!: string = undefined;
6+
}
7+
---
8+
9+
[#1 Content] = 0:6-0:9
10+
0| class Aaa {
11+
>---<
12+
13+
[#1 Removal] = 0:6-0:10
14+
0| class Aaa {
15+
>----<
16+
17+
[#1 Leading delimiter] = 0:5-0:6
18+
0| class Aaa {
19+
>-<
20+
21+
[#1 Trailing delimiter] = 0:9-0:10
22+
0| class Aaa {
23+
>-<
24+
25+
[#1 Domain] = 0:0-5:1
26+
0| class Aaa {
27+
>-----------
28+
1| bbb!: string = undefined;
29+
-----------------------------
30+
2| ccc: string = undefined;
31+
----------------------------
32+
3| ddd = undefined;
33+
--------------------
34+
4| private eee!: string = undefined;
35+
-------------------------------------
36+
5| }
37+
-<
38+
39+
[#1 Insertion delimiter] = " "
40+
41+
42+
[#2 Content] =
43+
[#2 Removal] = 1:4-1:7
44+
1| bbb!: string = undefined;
45+
>---<
46+
47+
[#2 Leading delimiter] = 1:0-1:4
48+
1| bbb!: string = undefined;
49+
>----<
50+
51+
[#2 Domain] = 1:4-1:29
52+
1| bbb!: string = undefined;
53+
>-------------------------<
54+
55+
[#2 Insertion delimiter] = " "
56+
57+
58+
[#3 Content] = 2:4-2:7
59+
2| ccc: string = undefined;
60+
>---<
61+
62+
[#3 Removal] = 2:0-2:7
63+
2| ccc: string = undefined;
64+
>-------<
65+
66+
[#3 Leading delimiter] = 2:0-2:4
67+
2| ccc: string = undefined;
68+
>----<
69+
70+
[#3 Domain] = 2:4-2:28
71+
2| ccc: string = undefined;
72+
>------------------------<
73+
74+
[#3 Insertion delimiter] = " "
75+
76+
77+
[#4 Content] = 3:4-3:7
78+
3| ddd = undefined;
79+
>---<
80+
81+
[#4 Removal] = 3:4-3:8
82+
3| ddd = undefined;
83+
>----<
84+
85+
[#4 Leading delimiter] = 3:0-3:4
86+
3| ddd = undefined;
87+
>----<
88+
89+
[#4 Trailing delimiter] = 3:7-3:8
90+
3| ddd = undefined;
91+
>-<
92+
93+
[#4 Domain] = 3:4-3:20
94+
3| ddd = undefined;
95+
>----------------<
96+
97+
[#4 Insertion delimiter] = " "
98+
99+
100+
[#5 Content] =
101+
[#5 Removal] = 4:12-4:15
102+
4| private eee!: string = undefined;
103+
>---<
104+
105+
[#5 Leading delimiter] = 4:11-4:12
106+
4| private eee!: string = undefined;
107+
>-<
108+
109+
[#5 Domain] = 4:4-4:37
110+
4| private eee!: string = undefined;
111+
>---------------------------------<
112+
113+
[#5 Insertion delimiter] = " "
Lines changed: 94 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,102 @@
1-
class MyClass {
2-
value: number;
1+
class Aaa {
2+
bbb!: string = undefined;
3+
ccc: string = undefined;
4+
private eee!: string = undefined;
5+
eee: string;
6+
fff!: string;
37
}
48
---
59

6-
[Content] = 1:9-1:15
7-
1| value: number;
10+
[#1 Content] = 1:10-1:16
11+
1| bbb!: string = undefined;
12+
>------<
13+
14+
[#1 Removal] = 1:7-1:16
15+
1| bbb!: string = undefined;
16+
>---------<
17+
18+
[#1 Leading delimiter] = 1:7-1:10
19+
1| bbb!: string = undefined;
20+
>---<
21+
22+
[#1 Domain] = 1:4-1:29
23+
1| bbb!: string = undefined;
24+
>-------------------------<
25+
26+
[#1 Insertion delimiter] = " "
27+
28+
29+
[#2 Content] = 2:9-2:15
30+
2| ccc: string = undefined;
831
>------<
932

10-
[Removal] = 1:8-1:15
11-
1| value: number;
12-
>-------<
33+
[#2 Removal] = 2:7-2:15
34+
2| ccc: string = undefined;
35+
>--------<
36+
37+
[#2 Leading delimiter] = 2:7-2:9
38+
2| ccc: string = undefined;
39+
>--<
40+
41+
[#2 Domain] = 2:4-2:28
42+
2| ccc: string = undefined;
43+
>------------------------<
44+
45+
[#2 Insertion delimiter] = " "
46+
47+
48+
[#3 Content] = 3:18-3:24
49+
3| private eee!: string = undefined;
50+
>------<
51+
52+
[#3 Removal] = 3:15-3:24
53+
3| private eee!: string = undefined;
54+
>---------<
55+
56+
[#3 Leading delimiter] = 3:15-3:18
57+
3| private eee!: string = undefined;
58+
>---<
59+
60+
[#3 Domain] = 3:4-3:37
61+
3| private eee!: string = undefined;
62+
>---------------------------------<
63+
64+
[#3 Insertion delimiter] = " "
65+
66+
67+
[#4 Content] = 4:9-4:15
68+
4| eee: string;
69+
>------<
70+
71+
[#4 Removal] = 4:7-4:15
72+
4| eee: string;
73+
>--------<
74+
75+
[#4 Leading delimiter] = 4:7-4:9
76+
4| eee: string;
77+
>--<
78+
79+
[#4 Domain] = 4:4-4:16
80+
4| eee: string;
81+
>------------<
82+
83+
[#4 Insertion delimiter] = " "
84+
85+
86+
[#5 Content] = 5:10-5:16
87+
5| fff!: string;
88+
>------<
89+
90+
[#5 Removal] = 5:7-5:16
91+
5| fff!: string;
92+
>---------<
1393

14-
[Leading delimiter] = 1:8-1:9
15-
1| value: number;
16-
>-<
94+
[#5 Leading delimiter] = 5:7-5:10
95+
5| fff!: string;
96+
>---<
1797

18-
[Domain] = 1:2-1:16
19-
1| value: number;
20-
>--------------<
98+
[#5 Domain] = 5:4-5:17
99+
5| fff!: string;
100+
>-------------<
21101

22-
[Insertion delimiter] = " "
102+
[#5 Insertion delimiter] = " "
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
class Aaa {
2+
bbb!: string = undefined;
3+
ccc: string = undefined;
4+
ddd = undefined;
5+
private eee!: string = undefined;
6+
}
7+
---
8+
9+
[#1 Content] = 1:19-1:28
10+
1| bbb!: string = undefined;
11+
>---------<
12+
13+
[#1 Removal] = 1:16-1:28
14+
1| bbb!: string = undefined;
15+
>------------<
16+
17+
[#1 Leading delimiter] = 1:16-1:19
18+
1| bbb!: string = undefined;
19+
>---<
20+
21+
[#1 Domain] = 1:4-1:29
22+
1| bbb!: string = undefined;
23+
>-------------------------<
24+
25+
[#1 Insertion delimiter] = " "
26+
27+
28+
[#2 Content] = 2:18-2:27
29+
2| ccc: string = undefined;
30+
>---------<
31+
32+
[#2 Removal] = 2:15-2:27
33+
2| ccc: string = undefined;
34+
>------------<
35+
36+
[#2 Leading delimiter] = 2:15-2:18
37+
2| ccc: string = undefined;
38+
>---<
39+
40+
[#2 Domain] = 2:4-2:28
41+
2| ccc: string = undefined;
42+
>------------------------<
43+
44+
[#2 Insertion delimiter] = " "
45+
46+
47+
[#3 Content] = 3:10-3:19
48+
3| ddd = undefined;
49+
>---------<
50+
51+
[#3 Removal] = 3:7-3:19
52+
3| ddd = undefined;
53+
>------------<
54+
55+
[#3 Leading delimiter] = 3:7-3:10
56+
3| ddd = undefined;
57+
>---<
58+
59+
[#3 Domain] = 3:4-3:20
60+
3| ddd = undefined;
61+
>----------------<
62+
63+
[#3 Insertion delimiter] = " "
64+
65+
66+
[#4 Content] = 4:27-4:36
67+
4| private eee!: string = undefined;
68+
>---------<
69+
70+
[#4 Removal] = 4:24-4:36
71+
4| private eee!: string = undefined;
72+
>------------<
73+
74+
[#4 Leading delimiter] = 4:24-4:27
75+
4| private eee!: string = undefined;
76+
>---<
77+
78+
[#4 Domain] = 4:4-4:37
79+
4| private eee!: string = undefined;
80+
>---------------------------------<
81+
82+
[#4 Insertion delimiter] = " "

queries/typescript.core.scm

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,25 @@
6060

6161
(
6262
;;!! (public | private | protected) foo = ...;
63-
;;! -------------------------------^^^-------
63+
;;! -----------------------------------------
6464
(public_field_definition
65-
name: (_) @name
65+
name: (_) @name @value.leading.endOf
66+
!type
67+
value: (_)? @value
68+
) @_.domain.start
69+
.
70+
";"? @_.domain.end
71+
)
72+
73+
(
74+
;;!! (public | private | protected) foo: Bar = ...;
75+
;;! ----------------------------------------------
76+
(public_field_definition
77+
name: (_) @name @type.leading.endOf
6678
type: (_
6779
":"
6880
(_) @type
69-
)?
81+
) @value.leading.endOf
7082
value: (_)? @value
7183
) @_.domain.start
7284
.

0 commit comments

Comments
 (0)