|
1 | 1 | [ |
| 2 | + (list) |
| 3 | + (tuple) |
| 4 | + (dictionary) |
| 5 | + (set) |
| 6 | + (if_statement) |
| 7 | + (for_statement) |
| 8 | + (while_statement) |
| 9 | + (with_statement) |
| 10 | + (try_statement) |
| 11 | + (match_statement) |
| 12 | + (case_clause) |
2 | 13 | (import_from_statement) |
| 14 | + |
| 15 | + (parenthesized_expression) |
3 | 16 | (generator_expression) |
4 | 17 | (list_comprehension) |
5 | 18 | (set_comprehension) |
6 | 19 | (dictionary_comprehension) |
| 20 | + |
7 | 21 | (tuple_pattern) |
8 | 22 | (list_pattern) |
| 23 | + (argument_list) |
| 24 | + (parameters) |
9 | 25 | (binary_operator) |
10 | | - (lambda) |
11 | | - (concatenated_string) |
12 | | -] @indent.begin |
13 | | - |
14 | | -((list) @indent.align |
15 | | - (#set! indent.open_delimiter "[") |
16 | | - (#set! indent.close_delimiter "]")) |
17 | | - |
18 | | -((dictionary) @indent.align |
19 | | - (#set! indent.open_delimiter "{") |
20 | | - (#set! indent.close_delimiter "}")) |
21 | | - |
22 | | -((set) @indent.align |
23 | | - (#set! indent.open_delimiter "{") |
24 | | - (#set! indent.close_delimiter "}")) |
25 | | - |
26 | | -((parenthesized_expression) @indent.align |
27 | | - (#set! indent.open_delimiter "(") |
28 | | - (#set! indent.close_delimiter ")")) |
29 | | - |
30 | | -((for_statement) @indent.begin |
31 | | - (#set! indent.immediate 1)) |
32 | 26 |
|
33 | | -((if_statement) @indent.begin |
34 | | - (#set! indent.immediate 1)) |
| 27 | + (function_definition) |
| 28 | + (cdef_statement) |
| 29 | + (class_definition) |
| 30 | +] @indent |
35 | 31 |
|
36 | | -((while_statement) @indent.begin |
37 | | - (#set! indent.immediate 1)) |
38 | | - |
39 | | -((try_statement) @indent.begin |
40 | | - (#set! indent.immediate 1)) |
| 32 | +; Workaround for the tree-sitter grammar creating large errors when a |
| 33 | +; try_statement is missing the except/finally clause |
41 | 34 |
|
42 | 35 | (ERROR |
43 | 36 | "try" |
44 | 37 | . |
45 | | - ":" |
46 | | - (#set! indent.immediate 1)) @indent.begin |
| 38 | + ":" @indent @extend) |
| 39 | +(ERROR |
| 40 | + . |
| 41 | + "def") @indent @extend |
| 42 | +(ERROR |
| 43 | + (block) @indent @extend |
| 44 | + (#set! "scope" "all")) |
47 | 45 |
|
48 | 46 | (ERROR |
49 | 47 | "try" |
|
55 | 53 | (identifier) @_except) @indent.branch)) |
56 | 54 | (#eq? @_except "except")) |
57 | 55 |
|
58 | | -((function_definition) @indent.begin |
59 | | - (#set! indent.immediate 1)) |
60 | | - |
61 | | -((class_definition) @indent.begin |
62 | | - (#set! indent.immediate 1)) |
63 | | - |
64 | | -((with_statement) @indent.begin |
65 | | - (#set! indent.immediate 1)) |
66 | | - |
67 | | -((match_statement) @indent.begin |
68 | | - (#set! indent.immediate 1)) |
69 | | - |
70 | | -((case_clause) @indent.begin |
71 | | - (#set! indent.immediate 1)) |
72 | | - |
73 | | -; if (cond1 |
74 | | -; or cond2 |
75 | | -; or cond3): |
76 | | -; pass |
77 | | -; |
78 | | -(if_statement |
79 | | - condition: (parenthesized_expression) @indent.align |
80 | | - (#lua-match? @indent.align "^%([^\n]") |
81 | | - (#set! indent.open_delimiter "(") |
82 | | - (#set! indent.close_delimiter ")") |
83 | | - (#set! indent.avoid_last_matching_next 1)) |
84 | | - |
85 | | -; while ( |
86 | | -; cond1 |
87 | | -; or cond2 |
88 | | -; or cond3): |
89 | | -; pass |
90 | | -; |
91 | | -(while_statement |
92 | | - condition: (parenthesized_expression) @indent.align |
93 | | - (#lua-match? @indent.align "[^\n ]%)$") |
94 | | - (#set! indent.open_delimiter "(") |
95 | | - (#set! indent.close_delimiter ")") |
96 | | - (#set! indent.avoid_last_matching_next 1)) |
97 | | - |
98 | | -; if ( |
99 | | -; cond1 |
100 | | -; or cond2 |
101 | | -; or cond3): |
102 | | -; pass |
103 | | -; |
104 | | -(if_statement |
105 | | - condition: (parenthesized_expression) @indent.align |
106 | | - (#lua-match? @indent.align "[^\n ]%)$") |
107 | | - (#set! indent.open_delimiter "(") |
108 | | - (#set! indent.close_delimiter ")") |
109 | | - (#set! indent.avoid_last_matching_next 1)) |
110 | | - |
111 | | -(ERROR |
112 | | - "(" @indent.align |
113 | | - (#set! indent.open_delimiter "(") |
114 | | - (#set! indent.close_delimiter ")") |
115 | | - . |
116 | | - (_)) |
117 | | - |
118 | | -((argument_list) @indent.align |
119 | | - (#set! indent.open_delimiter "(") |
120 | | - (#set! indent.close_delimiter ")")) |
121 | | - |
122 | | -((parameters) @indent.align |
123 | | - (#set! indent.open_delimiter "(") |
124 | | - (#set! indent.close_delimiter ")")) |
125 | | - |
126 | | -((parameters) @indent.align |
127 | | - (#lua-match? @indent.align "[^\n ]%)$") |
128 | | - (#set! indent.open_delimiter "(") |
129 | | - (#set! indent.close_delimiter ")") |
130 | | - (#set! indent.avoid_last_matching_next 1)) |
131 | | - |
132 | | -((tuple) @indent.align |
133 | | - (#set! indent.open_delimiter "(") |
134 | | - (#set! indent.close_delimiter ")")) |
135 | | - |
136 | | -(ERROR |
137 | | - "[" @indent.align |
138 | | - (#set! indent.open_delimiter "[") |
139 | | - (#set! indent.close_delimiter "]") |
140 | | - . |
141 | | - (_)) |
142 | | - |
143 | | -(ERROR |
144 | | - "{" @indent.align |
145 | | - (#set! indent.open_delimiter "{") |
146 | | - (#set! indent.close_delimiter "}") |
147 | | - . |
148 | | - (_)) |
| 56 | +[ |
| 57 | + (if_statement) |
| 58 | + (for_statement) |
| 59 | + (while_statement) |
| 60 | + (with_statement) |
| 61 | + (try_statement) |
| 62 | + (match_statement) |
| 63 | + (case_clause) |
| 64 | + |
| 65 | + (cdef_statement) |
| 66 | + (function_definition) |
| 67 | + (class_definition) |
| 68 | +] @extend |
149 | 69 |
|
150 | 70 | [ |
| 71 | + (return_statement) |
151 | 72 | (break_statement) |
152 | 73 | (continue_statement) |
153 | | -] @indent.dedent |
154 | | - |
155 | | -(ERROR |
156 | | - (_) @indent.branch |
157 | | - ":" |
158 | | - . |
159 | | - (#lua-match? @indent.branch "^else")) |
160 | | - |
161 | | -(ERROR |
162 | | - (_) @indent.branch @indent.dedent |
163 | | - ":" |
164 | | - . |
165 | | - (#lua-match? @indent.branch "^elif")) |
166 | | - |
167 | | -(generator_expression |
168 | | - ")" @indent.end) |
169 | | - |
170 | | -(list_comprehension |
171 | | - "]" @indent.end) |
172 | | - |
173 | | -(set_comprehension |
174 | | - "}" @indent.end) |
175 | | - |
176 | | -(dictionary_comprehension |
177 | | - "}" @indent.end) |
178 | | - |
179 | | -(tuple_pattern |
180 | | - ")" @indent.end) |
181 | | - |
182 | | -(list_pattern |
183 | | - "]" @indent.end) |
184 | | - |
185 | | -(return_statement |
186 | | - [ |
187 | | - (_) @indent.end |
188 | | - (_ |
189 | | - [ |
190 | | - (_) |
191 | | - ")" |
192 | | - "}" |
193 | | - "]" |
194 | | - ] @indent.end .) |
195 | | - (attribute |
196 | | - attribute: (_) @indent.end) |
197 | | - (call |
198 | | - arguments: (_ |
199 | | - ")" @indent.end)) |
200 | | - "return" @indent.end |
201 | | - ] .) |
| 74 | + (raise_statement) |
| 75 | + (pass_statement) |
| 76 | +] @extend.prevent-once |
202 | 77 |
|
203 | 78 | [ |
204 | 79 | ")" |
205 | 80 | "]" |
206 | 81 | "}" |
207 | | - (elif_clause) |
208 | | - (else_clause) |
209 | | - (except_clause) |
210 | | - (finally_clause) |
211 | | -] @indent.branch |
| 82 | +] @outdent |
| 83 | +(elif_clause |
| 84 | + "elif" @outdent) |
| 85 | +(else_clause |
| 86 | + "else" @outdent) |
212 | 87 |
|
213 | | -(string) @indent.auto |
| 88 | +(parameters |
| 89 | + . |
| 90 | + (identifier) @anchor |
| 91 | + (#set! "scope" "tail")) @align |
| 92 | + |
| 93 | +(argument_list |
| 94 | + . |
| 95 | + (_) @anchor |
| 96 | + (#set! "scope" "tail")) @align |
0 commit comments