[OCaml] Mobile-friendly clone of cgit.
feat add ocamldoc grammar for .mld file highlighting
Bundle the ocamldoc TextMate grammar from vscode-ocaml-platform. Register it as scope source.ocaml.ocamldoc and map .mld files to it in syntax detection.
Changed files
lib/grammars/ocamldoc.json
@@ -0,0 +1,323 @@
1
Added:
{
2
Added:
"scopeName": "source.ocaml.ocamldoc",
3
Added:
"name": "OCamldoc",
4
Added:
"fileTypes": ["mld"],
5
Added:
"patterns": [{ "include": "#markup" }],
6
Added:
"repository": {
7
Added:
"markup": {
8
Added:
"patterns": [
9
Added:
{
10
Added:
"comment": "ocamldoc documentation tag @raise",
11
Added:
"match": "(@raises?)[[:space:]]+([^[:space:]]+)",
12
Added:
"captures": {
13
Added:
"1": { "name": "keyword.doc-tag.ocamldoc" },
14
Added:
"2": {
15
Added:
"name": "markup.inline.raw.ocamldoc source.embedded.ocamldoc constant.language.capital-identifier.ocaml"
16
Added:
}
17
Added:
}
18
Added:
},
19
Added:
{
20
Added:
"comment": "ocamldoc documentation tag @param",
21
Added:
"match": "(@param)[[:space:]]+([^[:space:]]+)",
22
Added:
"captures": {
23
Added:
"1": { "name": "keyword.doc-tag.ocamldoc" },
24
Added:
"2": {
25
Added:
"name": "markup.inline.raw.ocamldoc source.embedded.ocamldoc"
26
Added:
}
27
Added:
}
28
Added:
},
29
Added:
{
30
Added:
"comment": "ocamldoc documentation tag @see",
31
Added:
"match": "(@see)[[:space:]]+(<.*?>|\".*?\"|'.*?')",
32
Added:
"captures": {
33
Added:
"1": { "name": "keyword.doc-tag.ocamldoc" },
34
Added:
"2": {
35
Added:
"name": "markup.underline.link.ocamldoc meta.link.ocamldoc"
36
Added:
}
37
Added:
}
38
Added:
},
39
Added:
{
40
Added:
"comment": "ocamldoc documentation tag",
41
Added:
"name": "keyword.doc-tag.ocamldoc",
42
Added:
"match": "@[[:lower:]]+"
43
Added:
},
44
Added:
{
45
Added:
"comment": "embedded ocaml source",
46
Added:
"begin": "(?<!\\\\)\\[",
47
Added:
"end": "(?<!\\\\)\\]",
48
Added:
"name": "markup.inline.raw.ocamldoc",
49
Added:
"contentName": "source.embedded.ocamldoc",
50
Added:
"patterns": [{ "include": "source.ocaml" }]
51
Added:
},
52
Added:
{
53
Added:
"comment": "embedded preformatted ocaml source",
54
Added:
"begin": "(?<!\\\\)\\{(@ocaml([[:space:]].*?)?)?\\[",
55
Added:
"end": "(?<!\\\\)\\]\\}",
56
Added:
"name": "markup.inline.raw.ocamldoc",
57
Added:
"contentName": "source.embedded.ocamldoc",
58
Added:
"patterns": [{ "include": "source.ocaml" }]
59
Added:
},
60
Added:
{
61
Added:
"comment": "embedded other language source",
62
Added:
"begin": "(?<!\\\\)\\{@.+?\\[",
63
Added:
"end": "(?<!\\\\)\\]\\}",
64
Added:
"name": "markup.inline.raw.odoc",
65
Added:
"contentName": "source.embedded.odoc"
66
Added:
},
67
Added:
{
68
Added:
"comment": "cross-reference",
69
Added:
"begin": "(?<!\\\\)\\{!((modules?|modtype|module-type|class|classtype|class-type|val|value|type|exception|exn|attribute|method|section|const|recfield|field|extension|extension-decl|instance-variable|label|page):)?",
70
Added:
"end": "(?<!\\\\)\\}",
71
Added:
"name": "markup.inline.raw.ocamldoc",
72
Added:
"contentName": "source.embedded.ocamldoc",
73
Added:
"patterns": [{ "include": "source.ocaml" }]
74
Added:
},
75
Added:
{
76
Added:
"comment": "cross-reference with alt text",
77
Added:
"begin": "(?<!\\\\)\\{(\\{!((module|modtype|module-type|class|classtype|class-type|val|value|type|exception|exn|attribute|method|section|const|recfield|field|extension|extension-decl|instance-variable|label|page):)?)",
78
Added:
"end": "(\\}).*?(?<!\\\\)\\}",
79
Added:
"name": "markup.underline.link.ocamldoc meta.link.ocamldoc",
80
Added:
"contentName": "markup.inline.raw.ocamldoc source.embedded.ocamldoc",
81
Added:
"patterns": [{ "include": "source.ocaml" }],
82
Added:
"beginCaptures": {
83
Added:
"1": { "name": "markup.inline.raw.ocamldoc" }
84
Added:
},
85
Added:
"endCaptures": {
86
Added:
"1": { "name": "markup.inline.raw.ocamldoc" }
87
Added:
}
88
Added:
},
89
Added:
{
90
Added:
"comment": "ocamldoc heading tag",
91
Added:
"begin": "(?<!\\\\){[[:digit:]]+(:[^[:space:]]*)?[[:space:]]",
92
Added:
"end": "(?<!\\\\)}",
93
Added:
"name": "markup.heading.ocamldoc",
94
Added:
"patterns": [{ "include": "#markup" }],
95
Added:
"beginCaptures": {
96
Added:
"1": { "name": "meta.link.label.ocamldoc" }
97
Added:
}
98
Added:
},
99
Added:
{
100
Added:
"comment": "ocamldoc bold",
101
Added:
"begin": "(?<!\\\\){b[[:space:]]",
102
Added:
"end": "(?<!\\\\)}",
103
Added:
"name": "markup.bold.ocamldoc",
104
Added:
"patterns": [{ "include": "#markup" }]
105
Added:
},
106
Added:
{
107
Added:
"comment": "ocamldoc italic/emph",
108
Added:
"begin": "(?<!\\\\){(i|e)[[:space:]]",
109
Added:
"end": "(?<!\\\\)}",
110
Added:
"name": "markup.italic.ocamldoc",
111
Added:
"patterns": [{ "include": "#markup" }]
112
Added:
},
113
Added:
{
114
Added:
"comment": "ocamldoc verbatim",
115
Added:
"begin": "(?<!\\\\){v[[:space:]]",
116
Added:
"end": "\\bv}",
117
Added:
"name": "markup.inline.raw.ocamldoc"
118
Added:
},
119
Added:
{
120
Added:
"comment": "ocamldoc exponent/index",
121
Added:
"begin": "(?<!\\\\){(\\^|\\_)[[:space:]]",
122
Added:
"end": "(?<!\\\\)}",
123
Added:
"name": "markup.exponent.ocamldoc",
124
Added:
"patterns": [{ "include": "#markup" }]
125
Added:
},
126
Added:
{
127
Added:
"comment": "odoc inline math",
128
Added:
"begin": "(?<!\\\\){m[[:space:]]",
129
Added:
"end": "(?<!\\\\)\\}",
130
Added:
"name": "support.class.math.odoc markup.math.inline.odoc meta.math.inline.odoc",
131
Added:
"patterns": [{ "include": "#braces" }]
132
Added:
},
133
Added:
{
134
Added:
"comment": "odoc math block",
135
Added:
"begin": "(?<!\\\\){math[[:space:]]",
136
Added:
"end": "(?<!\\\\)\\}",
137
Added:
"name": "support.class.math.odoc markup.math.block.odoc meta.math.block.odoc",
138
Added:
"patterns": [{ "include": "#braces" }]
139
Added:
},
140
Added:
{
141
Added:
"comment": "ocamldoc simple lists",
142
Added:
"match": "^[[:space:]]*(\\-|\\+)",
143
Added:
"name": "punctuation.definition.list.begin.markdown.ocamldoc"
144
Added:
},
145
Added:
{
146
Added:
"comment": "ocamldoc lists",
147
Added:
"begin": "((?<!\\\\){(ul|ol)[[:space:]])",
148
Added:
"end": "((?<!\\\\)})",
149
Added:
"beginCaptures": {
150
Added:
"1": {
151
Added:
"name": "punctuation.definition.list.begin.markdown.ocamldoc"
152
Added:
}
153
Added:
},
154
Added:
"endCaptures": {
155
Added:
"1": {
156
Added:
"name": "punctuation.definition.list.begin.markdown.ocamldoc"
157
Added:
}
158
Added:
},
159
Added:
"patterns": [{ "include": "#lists" }]
160
Added:
},
161
Added:
{
162
Added:
"comment": "ocamldoc tables",
163
Added:
"begin": "((?<!\\\\){table[[:space:]])",
164
Added:
"end": "((?<!\\\\)})",
165
Added:
"beginCaptures": {
166
Added:
"1": {
167
Added:
"name": "punctuation.definition.list.begin.markdown.table.ocamldoc"
168
Added:
}
169
Added:
},
170
Added:
"endCaptures": {
171
Added:
"1": {
172
Added:
"name": "punctuation.definition.list.begin.markdown.table.ocamldoc"
173
Added:
}
174
Added:
},
175
Added:
"patterns": [{ "include": "#table" }]
176
Added:
},
177
Added:
{
178
Added:
"comment": "ocamldoc light tables",
179
Added:
"begin": "((?<!\\\\){t[[:space:]])",
180
Added:
"end": "((?<!\\\\)})",
181
Added:
"beginCaptures": {
182
Added:
"1": {
183
Added:
"name": "punctuation.definition.list.begin.markdown.table.light.ocamldoc"
184
Added:
}
185
Added:
},
186
Added:
"endCaptures": {
187
Added:
"1": {
188
Added:
"name": "punctuation.definition.list.begin.markdown.table.light.ocamldoc"
189
Added:
}
190
Added:
},
191
Added:
"patterns": [{ "include": "#lighttable" }]
192
Added:
},
193
Added:
{
194
Added:
"comment": "ocamldoc links with alt-text",
195
Added:
"begin": "(?<!\\\\){({:.*?})",
196
Added:
"beginCaptures": {
197
Added:
"1": { "name": "string.other.link.title.markdown.ocamldoc" }
198
Added:
},
199
Added:
"end": "(?<!\\\\)\\}",
200
Added:
"patterns": [{ "include": "#markup" }],
201
Added:
"name": "markup.underline.link.ocamldoc meta.link.ocamldoc"
202
Added:
},
203
Added:
{
204
Added:
"comment": "ocamldoc links",
205
Added:
"match": "(?<!\\\\)({:.*?})",
206
Added:
"captures": {
207
Added:
"1": { "name": "string.other.link.title.markdown.ocamldoc" }
208
Added:
}
209
Added:
},
210
Added:
{
211
Added:
"comment": "ocamldoc latex",
212
Added:
"begin": "(?<!\\\\){\\%([[:space:]]|latex:)",
213
Added:
"end": "\\%}",
214
Added:
"name": "markup.inline.raw.ocamldoc",
215
Added:
"patterns": [{ "include": "text.tex.latex" }]
216
Added:
},
217
Added:
{
218
Added:
"comment": "ocamldoc html",
219
Added:
"begin": "(?<!\\\\){\\%html:",
220
Added:
"end": "\\%}",
221
Added:
"name": "markup.inline.raw.ocamldoc",
222
Added:
"patterns": [{ "include": "text.html.derivative" }]
223
Added:
}
224
Added:
]
225
Added:
},
226
Added:
"lists": {
227
Added:
"patterns": [
228
Added:
{
229
Added:
"comment": "ocamldoc list element",
230
Added:
"begin": "((?<!\\\\){(\\-|li)[[:space:]])",
231
Added:
"end": "((?<!\\\\)})",
232
Added:
"beginCaptures": {
233
Added:
"1": {
234
Added:
"name": "punctuation.definition.list.begin.markdown.ocamldoc"
235
Added:
}
236
Added:
},
237
Added:
"endCaptures": {
238
Added:
"1": {
239
Added:
"name": "punctuation.definition.list.begin.markdown.ocamldoc"
240
Added:
}
241
Added:
},
242
Added:
"patterns": [{ "include": "#markup" }]
243
Added:
}
244
Added:
]
245
Added:
},
246
Added:
"table": {
247
Added:
"patterns": [
248
Added:
{
249
Added:
"comment": "ocamldoc table row",
250
Added:
"begin": "((?<!\\\\){tr[[:space:]])",
251
Added:
"end": "((?<!\\\\)})",
252
Added:
"beginCaptures": {
253
Added:
"1": {
254
Added:
"name": "punctuation.definition.list.begin.markdown.table.row.ocamldoc"
255
Added:
}
256
Added:
},
257
Added:
"endCaptures": {
258
Added:
"1": {
259
Added:
"name": "punctuation.definition.list.begin.markdown.table.row.ocamldoc"
260
Added:
}
261
Added:
},
262
Added:
"patterns": [{ "include": "#tablerow" }]
263
Added:
}
264
Added:
]
265
Added:
},
266
Added:
"tablerow": {
267
Added:
"patterns": [
268
Added:
{
269
Added:
"comment": "ocamldoc table cell",
270
Added:
"begin": "((?<!\\\\){td[[:space:]])",
271
Added:
"end": "((?<!\\\\)})",
272
Added:
"beginCaptures": {
273
Added:
"1": {
274
Added:
"name": "punctuation.definition.list.begin.markdown.table.cell.ocamldoc"
275
Added:
}
276
Added:
},
277
Added:
"endCaptures": {
278
Added:
"1": {
279
Added:
"name": "punctuation.definition.list.begin.markdown.table.cell.ocamldoc"
280
Added:
}
281
Added:
},
282
Added:
"patterns": [{ "include": "#markup" }]
283
Added:
},
284
Added:
{
285
Added:
"comment": "ocamldoc table header cell",
286
Added:
"begin": "((?<!\\\\){th[[:space:]])",
287
Added:
"end": "((?<!\\\\)})",
288
Added:
"contentName": "markup.bold.tableheader.ocamldoc",
289
Added:
"beginCaptures": {
290
Added:
"1": {
291
Added:
"name": "punctuation.definition.list.begin.markdown.tableheader.ocamldoc"
292
Added:
}
293
Added:
},
294
Added:
"endCaptures": {
295
Added:
"1": {
296
Added:
"name": "punctuation.definition.list.begin.markdown.tableheader.ocamldoc"
297
Added:
}
298
Added:
},
299
Added:
"patterns": [{ "include": "#markup" }]
300
Added:
}
301
Added:
]
302
Added:
},
303
Added:
"lighttable": {
304
Added:
"patterns": [
305
Added:
{ "include": "#markup" },
306
Added:
{
307
Added:
"comment": "table characters",
308
Added:
"match": "\\||(\\-\\-\\-+)|(:\\-\\-\\-+:)|(:\\-\\-+)|(\\-\\-+:)",
309
Added:
"name": "punctuation.definition.list.begin.markdown.tableheader.tablechars.ocamldoc"
310
Added:
}
311
Added:
]
312
Added:
},
313
Added:
"braces": {
314
Added:
"patterns": [
315
Added:
{
316
Added:
"begin": "(?<!\\\\){",
317
Added:
"end": "(?<!\\\\)\\}",
318
Added:
"patterns": [{ "include": "#braces" }]
319
Added:
}
320
Added:
]
321
Added:
}
322
Added:
}
323
Added:
}
lib/highlight_grammars.ml
@@ -53,6 +53,7 @@
53
53
"nix";
54
54
"objective-c";
55
55
"ocaml";
56
Added:
"ocamldoc";
56
57
"opam";
57
58
"org";
58
59
"perl";
@@ -112,6 +113,7 @@
112
113
| "nix" -> Some "source.nix"
113
114
| "objective-c" | "objc" -> Some "source.objc"
114
115
| "ocaml" -> Some "source.ocaml"
116
Added:
| "ocamldoc" | "mld" -> Some "source.ocaml.ocamldoc"
115
117
| "opam" -> Some "source.ocaml.opam"
116
118
| "org" -> Some "source.org"
117
119
| "perl" -> Some "source.perl"
lib/syntax.ml
@@ -19,6 +19,7 @@
19
19
| _ -> (
20
20
match Filename.extension name |> String.lowercase_ascii with
21
21
| ".ml" | ".mli" -> Some "ocaml"
22
Added:
| ".mld" -> Some "ocamldoc"
22
23
| ".c" | ".h" -> Some "c"
23
24
| ".clj" | ".cljs" | ".cljc" | ".edn" -> Some "clojure"
24
25
| ".cpp" | ".cc" | ".cxx" | ".hpp" -> Some "cpp"