Skip to content

Commit 596de01

Browse files
committed
feat(typst): add textobjects
1 parent 4e91b5d commit 596de01

2 files changed

Lines changed: 120 additions & 0 deletions

File tree

BUILTIN_TEXTOBJECTS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@
175175
<tr>
176176
<td>typescript</td><td><span title="@assignment.inner">🟩</span></td> <td><span title="@assignment.lhs">🟩</span></td> <td><span title="@assignment.outer">🟩</span></td> <td><span title="@assignment.rhs">🟩</span></td> <td><span title="@attribute.inner">⬜</span></td> <td><span title="@attribute.outer">⬜</span></td> <td><span title="@block.inner">🟩</span></td> <td><span title="@block.outer">🟩</span></td> <td><span title="@call.inner">🟩</span></td> <td><span title="@call.outer">🟩</span></td> <td><span title="@class.inner">🟩</span></td> <td><span title="@class.outer">🟩</span></td> <td><span title="@comment.inner">⬜</span></td> <td><span title="@comment.outer">🟩</span></td> <td><span title="@conditional.inner">🟩</span></td> <td><span title="@conditional.outer">🟩</span></td> <td><span title="@frame.inner">⬜</span></td> <td><span title="@frame.outer">⬜</span></td> <td><span title="@function.inner">🟩</span></td> <td><span title="@function.outer">🟩</span></td> <td><span title="@loop.inner">🟩</span></td> <td><span title="@loop.outer">🟩</span></td> <td><span title="@number.inner">🟩</span></td> <td><span title="@parameter.inner">🟩</span></td> <td><span title="@parameter.outer">🟩</span></td> <td><span title="@regex.inner">🟩</span></td> <td><span title="@regex.outer">🟩</span></td> <td><span title="@return.inner">🟩</span></td> <td><span title="@return.outer">🟩</span></td> <td><span title="@scopename.inner">⬜</span></td> <td><span title="@statement.outer">🟩</span></td> </tr>
177177
<tr>
178+
<td>typst</td><td><span title="@assignment.inner">🟩</span></td> <td><span title="@assignment.lhs">🟩</span></td> <td><span title="@assignment.outer">🟩</span></td> <td><span title="@assignment.rhs">🟩</span></td> <td><span title="@attribute.inner">⬜</span></td> <td><span title="@attribute.outer">⬜</span></td> <td><span title="@block.inner">🟩</span></td> <td><span title="@block.outer">🟩</span></td> <td><span title="@call.inner">🟩</span></td> <td><span title="@call.outer">🟩</span></td> <td><span title="@class.inner">⬜</span></td> <td><span title="@class.outer">⬜</span></td> <td><span title="@comment.inner">⬜</span></td> <td><span title="@comment.outer">🟩</span></td> <td><span title="@conditional.inner">🟩</span></td> <td><span title="@conditional.outer">🟩</span></td> <td><span title="@frame.inner">⬜</span></td> <td><span title="@frame.outer">⬜</span></td> <td><span title="@function.inner">🟩</span></td> <td><span title="@function.outer">🟩</span></td> <td><span title="@loop.inner">🟩</span></td> <td><span title="@loop.outer">🟩</span></td> <td><span title="@number.inner">🟩</span></td> <td><span title="@parameter.inner">🟩</span></td> <td><span title="@parameter.outer">🟩</span></td> <td><span title="@regex.inner">🟩</span></td> <td><span title="@regex.outer">🟩</span></td> <td><span title="@return.inner">🟩</span></td> <td><span title="@return.outer">🟩</span></td> <td><span title="@scopename.inner">⬜</span></td> <td><span title="@statement.outer">⬜</span></td> </tr>
179+
<tr>
178180
<td>v</td><td><span title="@assignment.inner">🟩</span></td> <td><span title="@assignment.lhs">🟩</span></td> <td><span title="@assignment.outer">⬜</span></td> <td><span title="@assignment.rhs">🟩</span></td> <td><span title="@attribute.inner">⬜</span></td> <td><span title="@attribute.outer">⬜</span></td> <td><span title="@block.inner">🟩</span></td> <td><span title="@block.outer">🟩</span></td> <td><span title="@call.inner">🟩</span></td> <td><span title="@call.outer">🟩</span></td> <td><span title="@class.inner">🟩</span></td> <td><span title="@class.outer">🟩</span></td> <td><span title="@comment.inner">🟩</span></td> <td><span title="@comment.outer">🟩</span></td> <td><span title="@conditional.inner">🟩</span></td> <td><span title="@conditional.outer">🟩</span></td> <td><span title="@frame.inner">⬜</span></td> <td><span title="@frame.outer">⬜</span></td> <td><span title="@function.inner">🟩</span></td> <td><span title="@function.outer">🟩</span></td> <td><span title="@loop.inner">🟩</span></td> <td><span title="@loop.outer">🟩</span></td> <td><span title="@number.inner">🟩</span></td> <td><span title="@parameter.inner">🟩</span></td> <td><span title="@parameter.outer">🟩</span></td> <td><span title="@regex.inner">⬜</span></td> <td><span title="@regex.outer">⬜</span></td> <td><span title="@return.inner">🟩</span></td> <td><span title="@return.outer">🟩</span></td> <td><span title="@scopename.inner">⬜</span></td> <td><span title="@statement.outer">🟩</span></td> </tr>
179181
<tr>
180182
<td>vim</td><td><span title="@assignment.inner">🟩</span></td> <td><span title="@assignment.lhs">🟩</span></td> <td><span title="@assignment.outer">🟩</span></td> <td><span title="@assignment.rhs">🟩</span></td> <td><span title="@attribute.inner">⬜</span></td> <td><span title="@attribute.outer">⬜</span></td> <td><span title="@block.inner">🟩</span></td> <td><span title="@block.outer">🟩</span></td> <td><span title="@call.inner">⬜</span></td> <td><span title="@call.outer">🟩</span></td> <td><span title="@class.inner">⬜</span></td> <td><span title="@class.outer">⬜</span></td> <td><span title="@comment.inner">⬜</span></td> <td><span title="@comment.outer">🟩</span></td> <td><span title="@conditional.inner">🟩</span></td> <td><span title="@conditional.outer">🟩</span></td> <td><span title="@frame.inner">⬜</span></td> <td><span title="@frame.outer">⬜</span></td> <td><span title="@function.inner">🟩</span></td> <td><span title="@function.outer">🟩</span></td> <td><span title="@loop.inner">🟩</span></td> <td><span title="@loop.outer">🟩</span></td> <td><span title="@number.inner">🟩</span></td> <td><span title="@parameter.inner">🟩</span></td> <td><span title="@parameter.outer">🟩</span></td> <td><span title="@regex.inner">🟩</span></td> <td><span title="@regex.outer">🟩</span></td> <td><span title="@return.inner">🟩</span></td> <td><span title="@return.outer">🟩</span></td> <td><span title="@scopename.inner">⬜</span></td> <td><span title="@statement.outer">🟩</span></td> </tr>

queries/typst/textobjects.scm

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
; anonymous functions (it => ...)
2+
(lambda
3+
value: (block
4+
.
5+
"{"
6+
_+ @function.inner
7+
"}")
8+
) @function.outer
9+
10+
(lambda
11+
value: (_
12+
.
13+
"{"?
14+
_+ @function.inner
15+
"}"?)) @function.outer
16+
17+
; named functions (#let fn(x) = { ... })
18+
(let
19+
pattern: (call)
20+
value: (block
21+
.
22+
"{"
23+
_+ @function.inner
24+
"}")
25+
) @function.outer
26+
27+
(let
28+
pattern: (call)
29+
value: (_
30+
.
31+
"{"?
32+
_+ @function.inner
33+
"}"?)
34+
) @function.outer
35+
36+
; conditionals
37+
(while
38+
condition: (_) @conditional.inner)
39+
40+
(branch
41+
condition: (_) @conditional.inner) @conditional.outer
42+
43+
; loops
44+
(for
45+
(block) @loop.inner) @loop.outer
46+
47+
(while
48+
(block) @loop.inner) @loop.outer
49+
50+
; calls & parameters
51+
(call
52+
(group
53+
"," @parameter.outer
54+
.
55+
(_) @parameter.inner @parameter.outer) @call.inner) @call.outer
56+
57+
(call
58+
(group
59+
.
60+
(_) @parameter.inner @parameter.outer
61+
.
62+
","? @parameter.outer) @call.inner) @call.outer
63+
64+
; let it => { ... }
65+
(lambda
66+
pattern: (ident) @parameter.inner @parameter.outer)
67+
68+
; let (x, y) => { ... }
69+
(lambda
70+
pattern: (group
71+
"," @parameter.outer
72+
.
73+
(_) @parameter.inner @parameter.outer))
74+
75+
(lambda
76+
pattern: (group
77+
.
78+
(_) @parameter.inner @parameter.outer
79+
.
80+
","? @parameter.outer))
81+
82+
; blocks
83+
(_
84+
(block
85+
.
86+
"{"
87+
_+ @block.inner
88+
"}")) @block.outer
89+
90+
; regexes
91+
((call
92+
item: (ident) @_regex
93+
(group
94+
(_) @regex.inner)) @regex.outer
95+
(#eq? @_regex "regex"))
96+
97+
; assignments
98+
(assign) @assignment.inner @assignment.outer
99+
100+
(let
101+
.
102+
"let"
103+
_+ @assignment.inner
104+
) @assignment.outer
105+
106+
(_
107+
pattern: (_) @assignment.lhs
108+
value: (_) @assignment.rhs)
109+
110+
; others
111+
(comment) @comment.outer
112+
113+
(return) @return.outer
114+
115+
(return
116+
(_) @return.inner)
117+
118+
(number) @number.inner

0 commit comments

Comments
 (0)