-
-
Notifications
You must be signed in to change notification settings - Fork 84
/
Copy pathclojure.scm
81 lines (68 loc) · 1.48 KB
/
clojure.scm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
;; https://github.com/sogaiu/tree-sitter-clojure/blob/master/src/grammar.json
(comment) @comment @textFragment
(str_lit) @string @textFragment
(map_lit) @map
;; A list is either a vector literal or a quoted list literal
(vec_lit) @list
(quoting_lit
(list_lit)
) @list
;;!! '(foo bar)
;;! ^^^ ^^^
(list_lit
(_)? @_.leading.endOf
.
(_) @collectionItem
.
(_)? @_.trailing.startOf
)
(list_lit
open: "(" @collectionItem.iteration.start.endOf
close: ")" @collectionItem.iteration.end.startOf
) @collectionItem.iteration.domain
;;!! [foo bar]
;;! ^^^ ^^^
(vec_lit
(_)? @_.leading.endOf
.
(_) @collectionItem
.
(_)? @_.trailing.startOf
)
(vec_lit
open: "[" @collectionItem.iteration.start.endOf
close: "]" @collectionItem.iteration.end.startOf
) @collectionItem.iteration.domain
;; Keyword follow by a value
(map_lit
(_)? @_.leading.endOf
.
(kwd_lit) @collectionItem.start
.
value: (_) @collectionItem.end
.
(_)? @_.trailing.startOf
)
;; Keyword followed by comment or closing brace
(map_lit
(_)? @_.leading.endOf
.
(kwd_lit) @collectionItem.start
.
[
(comment) @_.trailing.startOf
"}"
]
)
;; Non keyword value that is not preceded by a keyword. eg a string literal.
(map_lit
_ @_dummy
.
value: (_) @collectionItem
(#not-type? @_dummy "kwd_lit")
(#not-type? @collectionItem "kwd_lit")
)
(map_lit
open: "{" @collectionItem.iteration.start.endOf
close: "}" @collectionItem.iteration.end.startOf
) @collectionItem.iteration.domain