|
166 | 166 | ]
|
167 | 167 | .
|
168 | 168 | ;; function declaration
|
| 169 | + [ |
| 170 | + ( |
| 171 | + (signature |
| 172 | + name: (variable) @functionName @name |
| 173 | + ) @namedFunction.start @functionName.domain.start @name.domain.start |
| 174 | + (#not-eq? @_previous @name) |
| 175 | + ) |
| 176 | + ( |
| 177 | + (function |
| 178 | + name: (variable) @functionName @name |
| 179 | + ) @namedFunction.start @functionName.domain.start @name.domain.start |
| 180 | + (#not-eq? @_previous @name) |
| 181 | + ) |
| 182 | + ] |
| 183 | + . |
| 184 | + (function)* |
| 185 | + . |
169 | 186 | (
|
170 |
| - [ |
171 |
| - ( |
172 |
| - (signature |
173 |
| - name: (variable) @functionName @name |
174 |
| - ) @namedFunction.start @functionName.domain.start @name.domain.start |
175 |
| - (#not-eq? @_previous @name) |
| 187 | + (function |
| 188 | + name: (variable) @_end_name |
| 189 | + ) @namedFunction.end @functionName.domain.end @name.domain.end |
| 190 | + (#eq? @name @_end_name) |
| 191 | + ) |
| 192 | + . |
| 193 | +) |
| 194 | +(haskell |
| 195 | + ;; previous declaration |
| 196 | + [ |
| 197 | + ( |
| 198 | + (_) @_previous |
| 199 | + (#not-type? @_previous "function" "signature") |
| 200 | + ) |
| 201 | + ( |
| 202 | + (function |
| 203 | + name: (variable) @_previous |
176 | 204 | )
|
177 |
| - ( |
178 |
| - (function |
| 205 | + ) |
| 206 | + ] |
| 207 | + . |
| 208 | + ;; function declaration |
| 209 | + [ |
| 210 | + ( |
| 211 | + (signature |
179 | 212 | name: (variable) @functionName @name
|
180 |
| - ) @namedFunction.start @functionName.domain.start @name.domain.start |
181 |
| - (#not-eq? @_previous @name) |
182 |
| - ) |
183 |
| - ] |
184 |
| - . |
185 |
| - (function)* |
186 |
| - . |
| 213 | + ) @namedFunction.start @functionName.domain.start @name.domain.start |
| 214 | + (#not-eq? @_previous @name) |
| 215 | + ) |
187 | 216 | (
|
188 | 217 | (function
|
189 |
| - name: (variable) @_end_name |
190 |
| - ) @namedFunction.end @functionName.domain.end @name.domain.end |
191 |
| - (#eq? @name @_end_name) |
| 218 | + name: (variable) @functionName @name |
| 219 | + ) @namedFunction.start @functionName.domain.start @name.domain.start |
| 220 | + (#not-eq? @_previous @name) |
192 | 221 | )
|
| 222 | + ] |
| 223 | + . |
| 224 | + (function)* |
| 225 | + . |
| 226 | + ( |
| 227 | + (function |
| 228 | + name: (variable) @_end_name |
| 229 | + ) @namedFunction.end @functionName.domain.end @name.domain.end |
| 230 | + (#eq? @name @_end_name) |
193 | 231 | )
|
194 | 232 | .
|
195 | 233 | )
|
|
198 | 236 | (haskell
|
199 | 237 | .
|
200 | 238 | ;; function declaration
|
201 |
| - ( |
202 |
| - (function |
203 |
| - name: (variable) @functionName @name @_end_name |
204 |
| - ;; The annotation `@_end_name` is REQUIRED because assertions are |
205 |
| - ;; hoisted, which means that the assertion `(#eq? @name @_end_name)` |
206 |
| - ;; is ALWAYS evaluated, so if we don't set `@_end_name`, it fails. |
207 |
| - ) @namedFunction @functionName.domain @name.domain |
208 |
| - ) |
| 239 | + (function |
| 240 | + name: (variable) @functionName @name |
| 241 | + ) @namedFunction @functionName.domain @name.domain |
209 | 242 | .
|
210 | 243 | )
|
211 | 244 | ;; ... as the ONLY in the file
|
212 | 245 | ;; ... with SIGNATURE and/or MULTIPLE declarations
|
213 | 246 | (haskell
|
214 | 247 | .
|
215 | 248 | ;; function declaration
|
216 |
| - ( |
217 |
| - [ |
218 |
| - ( |
219 |
| - (signature |
220 |
| - name: (variable) @functionName @name |
221 |
| - ) @namedFunction.start @functionName.domain.start @name.domain.start |
222 |
| - ) |
223 |
| - ( |
224 |
| - (function |
| 249 | + [ |
| 250 | + ( |
| 251 | + (signature |
225 | 252 | name: (variable) @functionName @name
|
226 |
| - ) @namedFunction.start @functionName.domain.start @name.domain.start |
227 |
| - ) |
228 |
| - ] |
229 |
| - . |
230 |
| - (function)* |
231 |
| - . |
| 253 | + ) @namedFunction.start @functionName.domain.start @name.domain.start |
| 254 | + ) |
232 | 255 | (
|
233 | 256 | (function
|
234 |
| - name: (variable) @_end_name |
235 |
| - ) @namedFunction.end @functionName.domain.end @name.domain.end |
236 |
| - (#eq? @name @_end_name) |
| 257 | + name: (variable) @functionName @name |
| 258 | + ) @namedFunction.start @functionName.domain.start @name.domain.start |
237 | 259 | )
|
| 260 | + ] |
| 261 | + . |
| 262 | + (function)* |
| 263 | + . |
| 264 | + ( |
| 265 | + (function |
| 266 | + name: (variable) @_end_name |
| 267 | + ) @namedFunction.end @functionName.domain.end @name.domain.end |
| 268 | + (#eq? @name @_end_name) |
238 | 269 | )
|
239 | 270 | .
|
240 | 271 | )
|
|
384 | 415 | (decls
|
385 | 416 | .
|
386 | 417 | ;; function declaration
|
387 |
| - ( |
388 |
| - [ |
389 |
| - ( |
390 |
| - (signature |
391 |
| - name: (variable) @functionName @name |
392 |
| - ) @namedFunction.start @functionName.domain.start @name.domain.start |
393 |
| - ) |
394 |
| - ( |
395 |
| - (function |
| 418 | + [ |
| 419 | + ( |
| 420 | + (signature |
396 | 421 | name: (variable) @functionName @name
|
397 |
| - ) @namedFunction.start @functionName.domain.start @name.domain.start |
398 |
| - ) |
399 |
| - ] |
400 |
| - . |
401 |
| - (function)* |
402 |
| - . |
| 422 | + ) @namedFunction.start @functionName.domain.start @name.domain.start |
| 423 | + ) |
403 | 424 | (
|
404 | 425 | (function
|
405 |
| - name: (variable) @_end_name |
406 |
| - ) @namedFunction.end @functionName.domain.end @name.domain.end |
407 |
| - (#eq? @name @_end_name) |
| 426 | + name: (variable) @functionName @name |
| 427 | + ) @namedFunction.start @functionName.domain.start @name.domain.start |
408 | 428 | )
|
| 429 | + ] |
| 430 | + . |
| 431 | + (function)* |
| 432 | + . |
| 433 | + ( |
| 434 | + (function |
| 435 | + name: (variable) @_end_name |
| 436 | + ) @namedFunction.end @functionName.domain.end @name.domain.end |
| 437 | + (#eq? @name @_end_name) |
409 | 438 | )
|
410 | 439 | .
|
411 | 440 | )
|
0 commit comments