ver 2009.10.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. data/CHANGELOG +1404 -0
  2. data/MANIFEST +187 -0
  3. data/Rakefile +30 -0
  4. data/TODO +169 -0
  5. data/bin/ver +19 -0
  6. data/config/detect.rb +109 -0
  7. data/config/keymap/vim.rb +239 -0
  8. data/config/rc.rb +0 -0
  9. data/config/scratch +3 -0
  10. data/config/syntax/ANTLR.json +275 -0
  11. data/config/syntax/ASP VB.net.json +228 -0
  12. data/config/syntax/ASP.json +135 -0
  13. data/config/syntax/ActionScript.json +168 -0
  14. data/config/syntax/Ada.json +108 -0
  15. data/config/syntax/Apache.json +342 -0
  16. data/config/syntax/AppleScript.json +721 -0
  17. data/config/syntax/Bibtex.json +253 -0
  18. data/config/syntax/Blog (HTML).json +47 -0
  19. data/config/syntax/Blog (Markdown).json +50 -0
  20. data/config/syntax/Blog (Text).json +45 -0
  21. data/config/syntax/Blog (Textile).json +45 -0
  22. data/config/syntax/Bulletin Board.json +428 -0
  23. data/config/syntax/C++.json +323 -0
  24. data/config/syntax/C.json +694 -0
  25. data/config/syntax/CSS.json +346 -0
  26. data/config/syntax/DOT.json +79 -0
  27. data/config/syntax/Diff.json +136 -0
  28. data/config/syntax/Dylan.json +104 -0
  29. data/config/syntax/Eiffel.json +128 -0
  30. data/config/syntax/Erlang.json +1636 -0
  31. data/config/syntax/F-Script.json +137 -0
  32. data/config/syntax/FXScript.json +260 -0
  33. data/config/syntax/Gri.json +141 -0
  34. data/config/syntax/HTML (Mason).json +207 -0
  35. data/config/syntax/HTML (Rails).json +52 -0
  36. data/config/syntax/HTML (Tcl).json +42 -0
  37. data/config/syntax/HTML for ASP.net.json +736 -0
  38. data/config/syntax/HTML-ASP.json +45 -0
  39. data/config/syntax/HTML.json +614 -0
  40. data/config/syntax/Haskell.json +407 -0
  41. data/config/syntax/Inform.json +80 -0
  42. data/config/syntax/Ini.json +91 -0
  43. data/config/syntax/Io.json +142 -0
  44. data/config/syntax/Java.json +745 -0
  45. data/config/syntax/JavaProperties.json +42 -0
  46. data/config/syntax/JavaScript.json +446 -0
  47. data/config/syntax/LaTeX Beamer.json +65 -0
  48. data/config/syntax/LaTeX Log.json +88 -0
  49. data/config/syntax/LaTeX.json +962 -0
  50. data/config/syntax/Lighttpd.json +93 -0
  51. data/config/syntax/Lisp.json +101 -0
  52. data/config/syntax/Literate Haskell.json +55 -0
  53. data/config/syntax/Logtalk.json +289 -0
  54. data/config/syntax/Lua.json +146 -0
  55. data/config/syntax/M.json +744 -0
  56. data/config/syntax/MEL.json +161 -0
  57. data/config/syntax/MIPS.json +114 -0
  58. data/config/syntax/Mail.json +224 -0
  59. data/config/syntax/Makefile.json +66 -0
  60. data/config/syntax/Markdown.json +644 -0
  61. data/config/syntax/Modula-3.json +80 -0
  62. data/config/syntax/Movable Type.json +348 -0
  63. data/config/syntax/OCaml.json +1391 -0
  64. data/config/syntax/Objective-C++.json +21 -0
  65. data/config/syntax/OpenGL.json +24 -0
  66. data/config/syntax/PHP.json +2184 -0
  67. data/config/syntax/Pascal.json +128 -0
  68. data/config/syntax/Perl.json +2091 -0
  69. data/config/syntax/Plain text.json +49 -0
  70. data/config/syntax/Processing.json +188 -0
  71. data/config/syntax/Quake3 Config.json +54 -0
  72. data/config/syntax/R.json +157 -0
  73. data/config/syntax/Rez.json +137 -0
  74. data/config/syntax/Ruby on Rails.json +170 -0
  75. data/config/syntax/Ruby.json +1753 -0
  76. data/config/syntax/SQL (Rails).json +31 -0
  77. data/config/syntax/SQL.json +435 -0
  78. data/config/syntax/SWIG.json +96 -0
  79. data/config/syntax/Scheme.json +359 -0
  80. data/config/syntax/Shell-Unix-Generic.json +1198 -0
  81. data/config/syntax/Slate.json +265 -0
  82. data/config/syntax/Smarty.json +110 -0
  83. data/config/syntax/Standard ML.json +322 -0
  84. data/config/syntax/Subversion commit message.json +62 -0
  85. data/config/syntax/Tcl.json +278 -0
  86. data/config/syntax/TeX Math.json +83 -0
  87. data/config/syntax/TeX.json +157 -0
  88. data/config/syntax/Textile.json +273 -0
  89. data/config/syntax/Twiki.json +436 -0
  90. data/config/syntax/Vectorscript.json +97 -0
  91. data/config/syntax/XML strict.json +148 -0
  92. data/config/syntax/XML.json +301 -0
  93. data/config/syntax/XSL.json +96 -0
  94. data/config/syntax/YAML.json +293 -0
  95. data/config/syntax/iCalendar.json +51 -0
  96. data/config/syntax/reStructuredText.json +403 -0
  97. data/config/theme/Active4D.json +260 -0
  98. data/config/theme/All Hallow's Eve.json +171 -0
  99. data/config/theme/Amy.json +359 -0
  100. data/config/theme/BBEdit.json +269 -0
  101. data/config/theme/Bespin.json +322 -0
  102. data/config/theme/Blackboard.json +215 -0
  103. data/config/theme/BoysAndGirls01.json +156 -0
  104. data/config/theme/Brilliance Black.json +1695 -0
  105. data/config/theme/Brilliance Dull.json +1451 -0
  106. data/config/theme/Classic Modified.json +288 -0
  107. data/config/theme/Cobalt.json +345 -0
  108. data/config/theme/Cool Glow.json +215 -0
  109. data/config/theme/Dawn.json +258 -0
  110. data/config/theme/Eiffel.json +270 -0
  111. data/config/theme/Espresso Libre.json +247 -0
  112. data/config/theme/Fluidvision.json +272 -0
  113. data/config/theme/IDLE.json +159 -0
  114. data/config/theme/LAZY.json +178 -0
  115. data/config/theme/Mac Classic.json +277 -0
  116. data/config/theme/MagicWB (Amiga).json +231 -0
  117. data/config/theme/Merbivore Soft.json +181 -0
  118. data/config/theme/Merbivore.json +181 -0
  119. data/config/theme/Monokai.json +177 -0
  120. data/config/theme/Notepad2.json +166 -0
  121. data/config/theme/Pastels on Dark.json +437 -0
  122. data/config/theme/RubyBlue.json +226 -0
  123. data/config/theme/Sin City 2.json +361 -0
  124. data/config/theme/Slate.json +270 -0
  125. data/config/theme/Slush & Poppies.json +232 -0
  126. data/config/theme/SpaceCadet.json +143 -0
  127. data/config/theme/Sunburst.json +415 -0
  128. data/config/theme/Twilight BG FG.json +633 -0
  129. data/config/theme/Twilight.json +321 -0
  130. data/config/theme/Whys Poignant.json +119 -0
  131. data/config/theme/Zenburnesque.json +237 -0
  132. data/config/theme/barf.json +155 -0
  133. data/config/theme/fake.json +418 -0
  134. data/config/theme/happydeluxe.json +114 -0
  135. data/config/theme/iLife 05.json +393 -0
  136. data/config/theme/iPlastic.json +177 -0
  137. data/config/theme/mintBlue Dark.json +414 -0
  138. data/config/theme/mintBlue.json +415 -0
  139. data/config/theme/monoindustrial.json +276 -0
  140. data/config/theme/starlight.json +67 -0
  141. data/config/tutorial +74 -0
  142. data/config/welcome +115 -0
  143. data/help/index.verh +14 -0
  144. data/lib/ver.rb +156 -0
  145. data/lib/ver/entry.rb +97 -0
  146. data/lib/ver/keymap.rb +96 -0
  147. data/lib/ver/layout.rb +107 -0
  148. data/lib/ver/methods.rb +19 -0
  149. data/lib/ver/methods/completion.rb +116 -0
  150. data/lib/ver/methods/control.rb +340 -0
  151. data/lib/ver/methods/insert.rb +6 -0
  152. data/lib/ver/methods/move.rb +65 -0
  153. data/lib/ver/methods/search.rb +33 -0
  154. data/lib/ver/methods/select.rb +145 -0
  155. data/lib/ver/methods/views.rb +21 -0
  156. data/lib/ver/mode.rb +160 -0
  157. data/lib/ver/options.rb +207 -0
  158. data/lib/ver/plist.rb +106 -0
  159. data/lib/ver/status.rb +67 -0
  160. data/lib/ver/syntax.rb +68 -0
  161. data/lib/ver/syntax/detector.rb +53 -0
  162. data/lib/ver/syntax/processor.rb +48 -0
  163. data/lib/ver/text.rb +374 -0
  164. data/lib/ver/textpow.rb +357 -0
  165. data/lib/ver/theme.rb +162 -0
  166. data/lib/ver/vendor/fuzzy_file_finder.rb +340 -0
  167. data/lib/ver/view.rb +163 -0
  168. data/lib/ver/view/entry.rb +28 -0
  169. data/lib/ver/view/list.rb +137 -0
  170. data/lib/ver/view/list/buffer.rb +27 -0
  171. data/lib/ver/view/list/fuzzy_file_finder.rb +44 -0
  172. data/lib/ver/view/list/syntax.rb +13 -0
  173. data/lib/ver/view/list/theme.rb +13 -0
  174. data/spec/keymap.rb +224 -0
  175. data/tasks/bacon.rake +49 -0
  176. data/tasks/changelog.rake +18 -0
  177. data/tasks/gem.rake +22 -0
  178. data/tasks/gem_installer.rake +76 -0
  179. data/tasks/grancher.rake +12 -0
  180. data/tasks/install_dependencies.rake +6 -0
  181. data/tasks/manifest.rake +4 -0
  182. data/tasks/plist2json.rake +35 -0
  183. data/tasks/rcov.rake +18 -0
  184. data/tasks/release.rake +12 -0
  185. data/tasks/reversion.rake +8 -0
  186. data/tasks/syntax_list.rake +31 -0
  187. data/ver.gemspec +29 -0
  188. metadata +241 -0
@@ -0,0 +1,80 @@
1
+ {
2
+ "fileTypes": [
3
+ "m3",
4
+ "cm3"
5
+ ],
6
+ "keyEquivalent": "^~M",
7
+ "name": "Modula-3",
8
+ "patterns": [
9
+ {
10
+ "match": "\\b(ANY|ARRAY|AS|BEGIN|BITS|BRANDED|BY|CASE|CONST|DIV|DO|ELSE|ELSIF|END|EVAL|EXCEPT|EXCEPTION|EXIT|EXPORTS|FINALLY|FOR|FROM|GENERIC|IF|IMPORT|INTERFACE|LOCK|LOOP|METHODS|MOD|MODULE|OBJECT|OF|OVERRIDES|PROCEDURE|RAISE|RAISES|READONLY|RECORD|REF|REPEAT|RETURN|REVEAL|ROOT|SET|THEN|TO|TRY|TYPE|TYPECASE|UNSAFE|UNTIL|UNTRACED|VALUE|VAR|WHILE|WITH|IN|NOT|AND|OR)\\b",
11
+ "name": "keyword.other.modula-3"
12
+ },
13
+ {
14
+ "match": "\\b(ABS|ADDRESS|ADR|ADRSIZE|BITSIZE|BOOLEAN|BYTESIZE|CARDINAL|CEILING|CHAR|DEC|DISPOSE|EXTENDED|FIRST|FLOAT|FLOOR|INC|INTEGER|ISTYPE|LAST|LONGREAL|LOOPHOLE|MAX|MIN|MUTEX|NARROW|NEW|NUMBER|ORD|REAL|REFANY|ROUND|SUBARRAY|TEXT|TRUNC|TYPECODE|VAL)\\b",
15
+ "name": "storage.type.modula-3"
16
+ },
17
+ {
18
+ "match": "\\b(FALSE|NIL|NULL|TRUE)\\b",
19
+ "name": "constant.language.modula-3"
20
+ },
21
+ {
22
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b",
23
+ "name": "constant.numeric.modula-3"
24
+ },
25
+ {
26
+ "begin": "'",
27
+ "beginCaptures": {
28
+ "0": {
29
+ "name": "punctuation.definition.string.begin.modula-3"
30
+ }
31
+ },
32
+ "end": "'",
33
+ "endCaptures": {
34
+ "0": {
35
+ "name": "punctuation.definition.string.end.modula-3"
36
+ }
37
+ },
38
+ "name": "string.quoted.single.modula-3",
39
+ "patterns": [
40
+ {
41
+ "match": "\\\\([ntrf\\\\'\"]|([0-7]{3}))",
42
+ "name": "constant.character.escape.modula-3"
43
+ }
44
+ ]
45
+ },
46
+ {
47
+ "begin": "\"",
48
+ "beginCaptures": {
49
+ "0": {
50
+ "name": "punctuation.definition.string.begin.modula-3"
51
+ }
52
+ },
53
+ "end": "\"",
54
+ "endCaptures": {
55
+ "0": {
56
+ "name": "punctuation.definition.string.end.modula-3"
57
+ }
58
+ },
59
+ "name": "string.quoted.double.modula-3",
60
+ "patterns": [
61
+ {
62
+ "match": "\\\\([ntrf\\\\'\"]|([0-7]{3}))",
63
+ "name": "constant.character.escape.modula-3"
64
+ }
65
+ ]
66
+ },
67
+ {
68
+ "begin": "\\(\\*",
69
+ "captures": {
70
+ "0": {
71
+ "name": "punctuation.definition.comment.modula-3"
72
+ }
73
+ },
74
+ "end": "\\*\\)",
75
+ "name": "comment.block.modula-3"
76
+ }
77
+ ],
78
+ "scopeName": "source.modula-3",
79
+ "uuid": "479D53FA-6ED6-11D9-8471-0011242E4184"
80
+ }
@@ -0,0 +1,348 @@
1
+ {
2
+ "fileTypes": [
3
+ "mtml"
4
+ ],
5
+ "firstLineMatch": "<\\$?[Mm][Tt]",
6
+ "foldingStartMarker": "(?x)\n\t\t(<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)\\b.*?>\n\t\t|<(?i:MT:?(?!Else))(\\w+:)?\\w+\\b.*?>\n\t\t|<!--(?!.*--\\s*>)\n\t\t|^<!--\\ \\#tminclude\\ (?>.*?-->)$\n\t\t|<\\?(?:php)?.*\\b(if|for(each)?|while)\\b.+:\n\t\t|\\{\\{?(if|foreach|capture|literal|foreach|php|section|strip)\n\t\t|\\{\\s*($|\\?>\\s*$|\/\/|\/\\*(.*\\*\/\\s*$|(?!.*?\\*\/)))\n\t\t)",
7
+ "foldingStopMarker": "(?x)\n\t\t(<\/(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)>\n\t\t|<\\\/(?i:MT:?(?!Else))(\\w+:)?\\w+\\b.*?>\n\t\t|^(?!.*?<!--).*?--\\s*>\n\t\t|^<!--\\ end\\ tminclude\\ -->$\n\t\t|<\\?(?:php)?.*\\bend(if|for(each)?|while)\\b\n\t\t|\\{\\{?\/(if|foreach|capture|literal|foreach|php|section|strip)\n\t\t|^[^{]*\\}\n\t\t)",
8
+ "keyEquivalent": "^~M",
9
+ "name": "Movable Type",
10
+ "patterns": [
11
+ {
12
+ "include": "#trans-tag"
13
+ },
14
+ {
15
+ "include": "#mt-container-tag"
16
+ },
17
+ {
18
+ "include": "#mt-variable-tag"
19
+ },
20
+ {
21
+ "comment": "This is set to use XHTML standards, but you can change that by changing .strict to .basic for HTML standards",
22
+ "include": "text.html.basic"
23
+ },
24
+ {
25
+ "begin": "{{",
26
+ "captures": {
27
+ "0": {
28
+ "name": "punctuation.section.embedded.smarty"
29
+ }
30
+ },
31
+ "end": "}}",
32
+ "name": "source.smarty.embedded.html",
33
+ "patterns": [
34
+ {
35
+ "include": "source.smarty"
36
+ }
37
+ ]
38
+ }
39
+ ],
40
+ "repository": {
41
+ "embedded-code": {
42
+ "patterns": [
43
+ {
44
+ "include": "#php"
45
+ },
46
+ {
47
+ "include": "#ruby"
48
+ },
49
+ {
50
+ "include": "#smarty"
51
+ }
52
+ ]
53
+ },
54
+ "entities": {
55
+ "patterns": [
56
+ {
57
+ "captures": {
58
+ "1": {
59
+ "name": "punctuation.definition.constant.html"
60
+ },
61
+ "3": {
62
+ "name": "punctuation.definition.constant.html"
63
+ }
64
+ },
65
+ "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
66
+ "name": "constant.character.entity.html"
67
+ },
68
+ {
69
+ "match": "&",
70
+ "name": "invalid.illegal.bad-ampersand.html"
71
+ }
72
+ ]
73
+ },
74
+ "mt-container-tag": {
75
+ "patterns": [
76
+ {
77
+ "begin": "(<\/?)([Mm][Tt]:?(\\w+:)?\\w+)",
78
+ "beginCaptures": {
79
+ "1": {
80
+ "name": "punctuation.definition.tag.mt"
81
+ },
82
+ "2": {
83
+ "name": "entity.name.tag.mt"
84
+ }
85
+ },
86
+ "end": ">",
87
+ "endCaptures": {
88
+ "0": {
89
+ "name": "punctuation.definition.tag.mt"
90
+ }
91
+ },
92
+ "name": "meta.tag.mt.container.html",
93
+ "patterns": [
94
+ {
95
+ "include": "#tag-stuff"
96
+ }
97
+ ]
98
+ }
99
+ ]
100
+ },
101
+ "mt-variable-tag": {
102
+ "patterns": [
103
+ {
104
+ "begin": "(<)(\\$[Mm][Tt]:?(\\w+:)?\\w+)",
105
+ "beginCaptures": {
106
+ "1": {
107
+ "name": "punctuation.definition.tag.mt"
108
+ },
109
+ "2": {
110
+ "name": "variable.other.mt"
111
+ }
112
+ },
113
+ "end": "(\\$)?(>)",
114
+ "endCaptures": {
115
+ "1": {
116
+ "name": "variable.other.mt"
117
+ },
118
+ "2": {
119
+ "name": "punctuation.definition.tag.mt"
120
+ }
121
+ },
122
+ "name": "meta.tag.mt.variable.html",
123
+ "patterns": [
124
+ {
125
+ "include": "#tag-stuff"
126
+ }
127
+ ]
128
+ }
129
+ ]
130
+ },
131
+ "php": {
132
+ "patterns": [
133
+ {
134
+ "begin": "(?:^\\s*)(<\\?(php|=)?)(?!.*\\?>)",
135
+ "captures": {
136
+ "1": {
137
+ "name": "punctuation.section.embedded.php"
138
+ }
139
+ },
140
+ "comment": "match only multi-line PHP with leading whitespace",
141
+ "end": "(\\?>)(?:\\s*$\\n)?",
142
+ "name": "source.php.embedded.html",
143
+ "patterns": [
144
+ {
145
+ "include": "#php-source"
146
+ }
147
+ ]
148
+ },
149
+ {
150
+ "begin": "<\\?(php|=)?",
151
+ "captures": {
152
+ "0": {
153
+ "name": "punctuation.section.embedded.php"
154
+ }
155
+ },
156
+ "end": "\\?>",
157
+ "name": "source.php.embedded.html",
158
+ "patterns": [
159
+ {
160
+ "include": "#php-source"
161
+ }
162
+ ]
163
+ }
164
+ ]
165
+ },
166
+ "php-source": {
167
+ "patterns": [
168
+ {
169
+ "captures": {
170
+ "1": {
171
+ "name": "punctuation.definition.comment.php"
172
+ }
173
+ },
174
+ "match": "(#).*?(?=\\?>)",
175
+ "name": "comment.line.number-sign.ruby"
176
+ },
177
+ {
178
+ "captures": {
179
+ "1": {
180
+ "name": "punctuation.definition.comment.php"
181
+ }
182
+ },
183
+ "match": "(\/\/).*?(?=\\?>)",
184
+ "name": "comment.line.double-slash.ruby"
185
+ },
186
+ {
187
+ "include": "source.php"
188
+ }
189
+ ]
190
+ },
191
+ "ruby": {
192
+ "begin": "<%+(?!>)=?",
193
+ "captures": {
194
+ "0": {
195
+ "name": "punctuation.section.embedded.ruby"
196
+ }
197
+ },
198
+ "end": "-?%>",
199
+ "name": "source.ruby.embedded.html",
200
+ "patterns": [
201
+ {
202
+ "captures": {
203
+ "1": {
204
+ "name": "punctuation.definition.comment.ruby"
205
+ }
206
+ },
207
+ "match": "(#).*?(?=-?%>)",
208
+ "name": "comment.line.number-sign.ruby"
209
+ },
210
+ {
211
+ "include": "source.ruby"
212
+ }
213
+ ]
214
+ },
215
+ "smarty": {
216
+ "begin": "{{|{",
217
+ "captures": {
218
+ "0": {
219
+ "name": "punctuation.section.embedded.smarty"
220
+ }
221
+ },
222
+ "disabled": "1",
223
+ "end": "}}|}",
224
+ "name": "source.smarty.embedded.xhtml",
225
+ "patterns": [
226
+ {
227
+ "include": "source.smarty"
228
+ }
229
+ ]
230
+ },
231
+ "string-double-quoted": {
232
+ "begin": "\"",
233
+ "beginCaptures": {
234
+ "0": {
235
+ "name": "punctuation.definition.string.begin.html"
236
+ }
237
+ },
238
+ "end": "\"",
239
+ "endCaptures": {
240
+ "0": {
241
+ "name": "punctuation.definition.string.end.html"
242
+ }
243
+ },
244
+ "name": "string.quoted.double.html",
245
+ "patterns": [
246
+ {
247
+ "include": "#trans-tag"
248
+ },
249
+ {
250
+ "include": "#mt-variable-tag"
251
+ },
252
+ {
253
+ "include": "#mt-container-tag"
254
+ },
255
+ {
256
+ "include": "#embedded-code"
257
+ },
258
+ {
259
+ "include": "#entities"
260
+ }
261
+ ]
262
+ },
263
+ "string-single-quoted": {
264
+ "begin": "'",
265
+ "beginCaptures": {
266
+ "0": {
267
+ "name": "punctuation.definition.string.begin.html"
268
+ }
269
+ },
270
+ "end": "'",
271
+ "endCaptures": {
272
+ "0": {
273
+ "name": "punctuation.definition.string.end.html"
274
+ }
275
+ },
276
+ "name": "string.quoted.single.html",
277
+ "patterns": [
278
+ {
279
+ "include": "#trans-tag"
280
+ },
281
+ {
282
+ "include": "#mt-variable-tag"
283
+ },
284
+ {
285
+ "include": "#mt-container-tag"
286
+ },
287
+ {
288
+ "include": "#embedded-code"
289
+ },
290
+ {
291
+ "include": "#entities"
292
+ }
293
+ ]
294
+ },
295
+ "tag-generic-attribute": {
296
+ "match": "\\b([a-zA-Z-_:]+)",
297
+ "name": "entity.other.attribute-name.html"
298
+ },
299
+ "tag-stuff": {
300
+ "patterns": [
301
+ {
302
+ "include": "#trans-tag"
303
+ },
304
+ {
305
+ "include": "#tag-generic-attribute"
306
+ },
307
+ {
308
+ "include": "#string-double-quoted"
309
+ },
310
+ {
311
+ "include": "#string-single-quoted"
312
+ }
313
+ ]
314
+ },
315
+ "trans-tag": {
316
+ "patterns": [
317
+ {
318
+ "begin": "(<)(__trans)",
319
+ "beginCaptures": {
320
+ "1": {
321
+ "name": "punctuation.definition.tag.mt"
322
+ },
323
+ "2": {
324
+ "name": "variable.other.mt"
325
+ }
326
+ },
327
+ "end": "(>)",
328
+ "endCaptures": {
329
+ "1": {
330
+ "name": "variable.other.mt"
331
+ },
332
+ "2": {
333
+ "name": "punctuation.definition.tag.mt"
334
+ }
335
+ },
336
+ "name": "meta.tag.mt.trans.html",
337
+ "patterns": [
338
+ {
339
+ "include": "#tag-stuff"
340
+ }
341
+ ]
342
+ }
343
+ ]
344
+ }
345
+ },
346
+ "scopeName": "text.html.mt",
347
+ "uuid": "7071B5CA-849A-4D88-A96E-DD725ED622BF"
348
+ }
@@ -0,0 +1,1391 @@
1
+ {
2
+ "fileTypes": [
3
+ "ml",
4
+ "mli"
5
+ ],
6
+ "foldingStartMarker": "(\\b(module|class|)\\s.*?=\\s*$|\\bbegin|sig|struct|(object(\\s*\\(_?[a-z]+\\))?)\\s*$|\\bwhile\\s.*?\\bdo\\s*$|^let(?:\\s+rec)?\\s+[a-z_][a-zA-Z0-9_]*\\s+(?!=)\\S)",
7
+ "foldingStopMarker": "(\\bend(\\s+in)?[ \\t]*(;{1,2}|=)?|\\bdone;?|^\\s*;;|^\\s*in)[ \\t]*$",
8
+ "keyEquivalent": "^~O",
9
+ "name": "OCaml",
10
+ "patterns": [
11
+ {
12
+ "captures": {
13
+ "1": {
14
+ "name": "keyword.other.module-binding.ocaml"
15
+ },
16
+ "2": {
17
+ "name": "keyword.other.module-definition.ocaml"
18
+ },
19
+ "3": {
20
+ "name": "support.other.module.ocaml"
21
+ },
22
+ "4": {
23
+ "name": "punctuation.separator.module-binding.ocmal"
24
+ }
25
+ },
26
+ "match": "\\b(let)\\s+(module)\\s+([A-Z][a-zA-Z0-9'_]*)\\s*(=)",
27
+ "name": "meta.module.binding"
28
+ },
29
+ {
30
+ "begin": "\\b(let|and)\\s+(?!\\(\\*)((rec\\s+)([a-z_][a-zA-Z0-9_']*)\\b|([a-z_][a-zA-Z0-9_']*|\\([^)]+\\))(?=\\s)((?=\\s*=\\s*(?=fun(?:ction)\\b))|(?!\\s*=)))",
31
+ "beginCaptures": {
32
+ "1": {
33
+ "name": "keyword.other.function-definition.ocaml"
34
+ },
35
+ "3": {
36
+ "name": "keyword.other.funtion-definition.ocaml"
37
+ },
38
+ "4": {
39
+ "name": "entity.name.function.ocaml"
40
+ },
41
+ "5": {
42
+ "name": "entity.name.function.ocaml"
43
+ }
44
+ },
45
+ "end": "(?:(:)\\s*([^=]+))?(?:(=)|(=)\\s*(?=fun(?:ction)\\b))",
46
+ "endCaptures": {
47
+ "1": {
48
+ "name": "punctuation.separator.function.type-constraint.ocaml"
49
+ },
50
+ "2": {
51
+ "name": "storage.type.ocaml"
52
+ },
53
+ "3": {
54
+ "name": "keyword.operator.ocaml"
55
+ },
56
+ "4": {
57
+ "name": "keyword.operator.ocaml"
58
+ }
59
+ },
60
+ "name": "meta.function.ocaml",
61
+ "patterns": [
62
+ {
63
+ "include": "#variables"
64
+ }
65
+ ]
66
+ },
67
+ {
68
+ "begin": "(\\(|\\s)(?=fun\\s)",
69
+ "beginCaptures": {
70
+ "1": {
71
+ "name": "punctuation.definition.function.anonymous.ocaml"
72
+ }
73
+ },
74
+ "end": "(\\))",
75
+ "endCaptures": {
76
+ "1": {
77
+ "name": "punctuation.definition.function.anonymous.ocaml"
78
+ }
79
+ },
80
+ "name": "meta.function.anonymous.ocaml",
81
+ "patterns": [
82
+ {
83
+ "begin": "(?<=(\\(|\\s))(fun)\\s",
84
+ "beginCaptures": {
85
+ "2": {
86
+ "name": "keyword.other.function-definition.ocaml"
87
+ }
88
+ },
89
+ "end": "(->)",
90
+ "endCaptures": {
91
+ "1": {
92
+ "name": "punctuation.separator.function-definition.ocaml"
93
+ }
94
+ },
95
+ "name": "meta.function.anonymous.definition.ocaml",
96
+ "patterns": [
97
+ {
98
+ "include": "#variables"
99
+ }
100
+ ]
101
+ },
102
+ {
103
+ "include": "$self"
104
+ }
105
+ ]
106
+ },
107
+ {
108
+ "begin": "^\\s*(?=type\\s)",
109
+ "end": "\\b(?=let|end|val)|^\\s*$",
110
+ "name": "meta.type-definition-group.ocaml",
111
+ "patterns": [
112
+ {
113
+ "begin": "\\b(type|and)\\s+([^=]*)(=)?",
114
+ "beginCaptures": {
115
+ "1": {
116
+ "name": "keyword.other.type-definition.ocaml"
117
+ },
118
+ "2": {
119
+ "name": "storage.type.ocaml"
120
+ },
121
+ "3": {
122
+ "name": "punctuation.separator.type-definition.ocaml"
123
+ }
124
+ },
125
+ "end": "(?=\\b(type|and|let|end|val)\\b)|(?=^\\s*$)",
126
+ "name": "meta.type-definition.ocaml",
127
+ "patterns": [
128
+ {
129
+ "include": "#typedefs"
130
+ }
131
+ ]
132
+ }
133
+ ]
134
+ },
135
+ {
136
+ "begin": "\\b(with|function)(?=(\\s*$|.*->))\\b|((?<!\\S)(\\|)(?=(\\w|\\s).*->))",
137
+ "beginCaptures": {
138
+ "1": {
139
+ "name": "keyword.control.match-definition.ocaml"
140
+ },
141
+ "2": {
142
+ "name": "keyword.other.function-definition.ocaml"
143
+ },
144
+ "3": {
145
+ "name": "keyword.control.match-definition.ocaml"
146
+ }
147
+ },
148
+ "end": "(?:(->)|\\b(when)\\b|\\s(?=\\|))",
149
+ "endCaptures": {
150
+ "1": {
151
+ "name": "punctuation.separator.match-definition.ocaml"
152
+ },
153
+ "2": {
154
+ "name": "keyword.control.match-condition.ocaml"
155
+ }
156
+ },
157
+ "name": "meta.pattern-match.ocaml",
158
+ "patterns": [
159
+ {
160
+ "include": "#matchpatterns"
161
+ }
162
+ ]
163
+ },
164
+ {
165
+ "captures": {
166
+ "1": {
167
+ "name": "keyword.other.class-type-definition.ocaml"
168
+ },
169
+ "2": {
170
+ "name": "entity.name.type.class-type.ocaml"
171
+ },
172
+ "4": {
173
+ "name": "storage.type.ocaml"
174
+ }
175
+ },
176
+ "match": "^[ \\t]*(class\\s+type\\s+)((\\[\\s*('[A-Za-z][a-zA-Z0-9_']*(?:\\s*,\\s*'[A-Za-z][a-zA-Z0-9_']*)*)\\s*\\]\\s+)?[a-z_][a-zA-Z0-9'_]*)",
177
+ "name": "meta.class.type-definition.ocaml"
178
+ },
179
+ {
180
+ "begin": "^[ \\t]*(class)(?:\\s+(?!(?:virtual)\\s+))((\\[\\s*('[A-Za-z][a-zA-Z0-9_']*(?:\\s*,\\s*'[A-Za-z][a-zA-Z0-9_']*)*)\\s*\\]\\s+)?[a-z_][a-zA-Z0-9'_]*)",
181
+ "beginCaptures": {
182
+ "1": {
183
+ "name": "keyword.other.class-definition.ocaml"
184
+ },
185
+ "2": {
186
+ "name": "entity.name.type.class.ocaml"
187
+ },
188
+ "4": {
189
+ "name": "storage.type.ocaml"
190
+ }
191
+ },
192
+ "end": "(=)",
193
+ "endCaptures": {
194
+ "1": {
195
+ "name": "keyword.operator.ocaml"
196
+ }
197
+ },
198
+ "name": "meta.class.ocaml",
199
+ "patterns": [
200
+ {
201
+ "include": "#variables"
202
+ }
203
+ ]
204
+ },
205
+ {
206
+ "begin": "^[ \\t]*(class\\s+virtual\\s+)((\\[\\s*('[A-Za-z][a-zA-Z0-9_']*(?:\\s*,\\s*'[A-Za-z][a-zA-Z0-9_']*)*)\\s*\\]\\s+)?[a-z_][a-zA-Z0-9'_]*)",
207
+ "beginCaptures": {
208
+ "1": {
209
+ "name": "keyword.other.class-definition.ocaml"
210
+ },
211
+ "2": {
212
+ "name": "entity.name.type.class.ocaml"
213
+ },
214
+ "4": {
215
+ "name": "storage.type.ocaml"
216
+ }
217
+ },
218
+ "end": "(=)",
219
+ "endCaptures": {
220
+ "1": {
221
+ "name": "keyword.operator.ocaml"
222
+ }
223
+ },
224
+ "name": "meta.class.virtual.ocaml",
225
+ "patterns": [
226
+ {
227
+ "include": "#variables"
228
+ }
229
+ ]
230
+ },
231
+ {
232
+ "captures": {
233
+ "1": {
234
+ "name": "keyword.other.class-type-definition.ocaml"
235
+ },
236
+ "2": {
237
+ "name": "entity.name.type.class-type.ocaml"
238
+ },
239
+ "4": {
240
+ "name": "storage.type.ocaml"
241
+ }
242
+ },
243
+ "match": "^[ \\t]*(class\\s+type\\s+virtual)((\\[\\s*('[A-Za-z][a-zA-Z0-9_']*(?:\\s*,\\s*'[A-Za-z][a-zA-Z0-9_']*)*)\\s*\\]\\s+)?[a-z_][a-zA-Z0-9'_]*)",
244
+ "name": "meta.class.virtual.type-definition.ocaml"
245
+ },
246
+ {
247
+ "begin": "(\\{)",
248
+ "beginCaptures": {
249
+ "1": {
250
+ "name": "punctuation.definition.record.ocaml"
251
+ }
252
+ },
253
+ "end": "(\\})",
254
+ "endCaptures": {
255
+ "1": {
256
+ "name": "punctuation.definition.record.ocaml"
257
+ }
258
+ },
259
+ "name": "meta.record.ocaml",
260
+ "patterns": [
261
+ {
262
+ "match": "\\bwith\\b",
263
+ "name": "keyword.other.language.ocaml"
264
+ },
265
+ {
266
+ "begin": "(\\bmutable\\s+)?\\b([a-z_][a-zA-Z0-9_']*)\\s*(:)",
267
+ "beginCaptures": {
268
+ "1": {
269
+ "name": "keyword.other.storage.modifier.ocaml"
270
+ },
271
+ "2": {
272
+ "name": "source.ocaml"
273
+ },
274
+ "3": {
275
+ "name": "punctuation.definition.record.ocaml"
276
+ }
277
+ },
278
+ "end": "(;|(?=}))",
279
+ "endCaptures": {
280
+ "1": {
281
+ "name": "keyword.operator.ocaml"
282
+ }
283
+ },
284
+ "name": "meta.record.definition.ocaml",
285
+ "patterns": [
286
+ {
287
+ "include": "#typedefs"
288
+ }
289
+ ]
290
+ },
291
+ {
292
+ "include": "$self"
293
+ }
294
+ ]
295
+ },
296
+ {
297
+ "begin": "\\b(object)\\s*(?:(\\()(_?[a-z]+)(\\)))?\\s*$",
298
+ "beginCaptures": {
299
+ "1": {
300
+ "name": "keyword.other.object-definition.ocaml"
301
+ },
302
+ "2": {
303
+ "name": "punctuation.definition.self-binding.ocaml"
304
+ },
305
+ "3": {
306
+ "name": "entity.name.type.self-binding.ocaml"
307
+ },
308
+ "4": {
309
+ "name": "punctuation.definition.self-binding.ocaml"
310
+ }
311
+ },
312
+ "end": "\\b(end)\\b",
313
+ "endCaptures": {
314
+ "1": {
315
+ "name": "keyword.control.object.ocaml"
316
+ },
317
+ "2": {
318
+ "name": "punctuation.terminator.expression.ocaml"
319
+ }
320
+ },
321
+ "name": "meta.object.ocaml",
322
+ "patterns": [
323
+ {
324
+ "begin": "\\b(method)\\s+(virtual\\s+)?(private\\s+)?([a-z_][a-zA-Z0-9'_]*)",
325
+ "beginCaptures": {
326
+ "1": {
327
+ "name": "keyword.other.method-definition.ocaml"
328
+ },
329
+ "2": {
330
+ "name": "keyword.other.method-definition.ocaml"
331
+ },
332
+ "3": {
333
+ "name": "keyword.other.method-restriction.ocaml"
334
+ },
335
+ "4": {
336
+ "name": "entity.name.function.method.ocaml"
337
+ }
338
+ },
339
+ "end": "(=|:)",
340
+ "endCaptures": {
341
+ "1": {
342
+ "name": "keyword.operator.ocaml"
343
+ }
344
+ },
345
+ "name": "meta.method.ocaml",
346
+ "patterns": [
347
+ {
348
+ "include": "#variables"
349
+ }
350
+ ]
351
+ },
352
+ {
353
+ "begin": "(constraint)\\s+([a-z_'][a-zA-Z0-9'_]*)\\s+(=)",
354
+ "beginCaptures": {
355
+ "1": {
356
+ "name": "keyword.other.language.ocaml"
357
+ },
358
+ "2": {
359
+ "name": "storage.type.ocaml"
360
+ },
361
+ "3": {
362
+ "name": "keyword.operator.ocaml"
363
+ }
364
+ },
365
+ "end": "(#[a-z_][a-zA-Z0-9'_]*)|(int|char|float|string|list|array|bool|unit|exn|option|int32|int64|nativeint|format4|lazy_t)|([a-z_][a-zA-Z0-9'_]*)\\s*$",
366
+ "endCaptures": {
367
+ "1": {
368
+ "name": "storage.type.polymorphic-variant.ocaml"
369
+ },
370
+ "2": {
371
+ "name": "storage.type.ocaml"
372
+ },
373
+ "3": {
374
+ "name": "storage.type.ocaml"
375
+ }
376
+ },
377
+ "name": "meta.object.type-constraint.ocaml"
378
+ },
379
+ {
380
+ "include": "$self"
381
+ }
382
+ ]
383
+ },
384
+ {
385
+ "captures": {
386
+ "1": {
387
+ "name": "punctuation.separator.method-call.ocaml"
388
+ }
389
+ },
390
+ "match": "(?<=\\w|\\)|')(#)[a-z_][a-zA-Z0-9'_]*",
391
+ "name": "meta.method-call.ocaml"
392
+ },
393
+ {
394
+ "captures": {
395
+ "1": {
396
+ "name": "keyword.other.module-definition.ocaml"
397
+ },
398
+ "2": {
399
+ "name": "entity.name.type.module.ocaml"
400
+ },
401
+ "3": {
402
+ "name": "punctuation.separator.module-definition.ocaml"
403
+ },
404
+ "4": {
405
+ "name": "entity.name.type.module-type.ocaml"
406
+ }
407
+ },
408
+ "match": "^[ \\t]*(module)\\s+([A-Z_][a-zA-Z0-9'_]*)(?:\\s*(:)\\s*([A-Z][a-zA-Z0-9'_]*)?)?",
409
+ "name": "meta.module.ocaml"
410
+ },
411
+ {
412
+ "captures": {
413
+ "1": {
414
+ "name": "keyword.other.module-type-definition.ocaml"
415
+ },
416
+ "2": {
417
+ "name": "entity.name.type.module-type.ocaml"
418
+ }
419
+ },
420
+ "match": "^[ \\t]*(module\\s+type\\s+)([A-Z][a-zA-Z0-9'_]*)",
421
+ "name": "meta.module.type.ocaml"
422
+ },
423
+ {
424
+ "begin": "\\b(sig)\\b",
425
+ "beginCaptures": {
426
+ "1": {
427
+ "name": "keyword.other.module.signature.ocaml"
428
+ }
429
+ },
430
+ "end": "\\b(end)\\b",
431
+ "endCaptures": {
432
+ "1": {
433
+ "name": "keyword.other.module.signature.ocaml"
434
+ },
435
+ "2": {
436
+ "name": "punctuation.terminator.expression.ocaml"
437
+ },
438
+ "3": {
439
+ "name": "keyword.operator.ocaml"
440
+ }
441
+ },
442
+ "name": "meta.module.signature.ocaml",
443
+ "patterns": [
444
+ {
445
+ "include": "#module-signature"
446
+ },
447
+ {
448
+ "include": "$self"
449
+ }
450
+ ]
451
+ },
452
+ {
453
+ "begin": "\\b(struct)\\b",
454
+ "beginCaptures": {
455
+ "1": {
456
+ "name": "keyword.other.module.structure.ocaml"
457
+ }
458
+ },
459
+ "end": "\\b(end)\\b",
460
+ "endCaptures": {
461
+ "1": {
462
+ "name": "keyword.other.module.structure.ocaml"
463
+ }
464
+ },
465
+ "name": "meta.module.structure.ocaml",
466
+ "patterns": [
467
+ {
468
+ "include": "$self"
469
+ }
470
+ ]
471
+ },
472
+ {
473
+ "include": "#moduleref"
474
+ },
475
+ {
476
+ "begin": "\\b(open)\\s+([A-Z][a-zA-Z0-9'_]*)(?=(\\.[A-Z][a-zA-Z0-9_]*)*)",
477
+ "beginCaptures": {
478
+ "1": {
479
+ "name": "keyword.other.ocaml"
480
+ },
481
+ "2": {
482
+ "name": "support.other.module.ocaml"
483
+ }
484
+ },
485
+ "end": "(\\s|$)",
486
+ "name": "meta.module.open.ocaml",
487
+ "patterns": [
488
+ {
489
+ "captures": {
490
+ "1": {
491
+ "name": "punctuation.separator.module-reference.ocaml"
492
+ }
493
+ },
494
+ "match": "(\\.)([A-Z][a-zA-Z0-9'_]*)",
495
+ "name": "support.other.module.ocaml"
496
+ }
497
+ ]
498
+ },
499
+ {
500
+ "captures": {
501
+ "1": {
502
+ "name": "keyword.other.ocaml"
503
+ },
504
+ "2": {
505
+ "name": "entity.name.type.exception.ocaml"
506
+ }
507
+ },
508
+ "match": "\\b(exception)\\s+([A-Z][a-zA-Z0-9'_]*)\\b",
509
+ "name": "meta.exception.ocaml"
510
+ },
511
+ {
512
+ "begin": "(?=(\\[<)(?![^\\[]+?[^>]]))",
513
+ "end": "(>])",
514
+ "endCaptures": {
515
+ "1": {
516
+ "name": "punctuation.definition.camlp4-stream.ocaml"
517
+ }
518
+ },
519
+ "name": "source.camlp4.embedded.ocaml",
520
+ "patterns": [
521
+ {
522
+ "include": "source.camlp4.ocaml"
523
+ }
524
+ ]
525
+ },
526
+ {
527
+ "include": "#strings"
528
+ },
529
+ {
530
+ "include": "#constants"
531
+ },
532
+ {
533
+ "include": "#comments"
534
+ },
535
+ {
536
+ "include": "#lists"
537
+ },
538
+ {
539
+ "include": "#arrays"
540
+ },
541
+ {
542
+ "begin": "(\\()(?=(~[a-z][a-zA-Z0-9_]*:|(\"(\\\\\"|[^\"])*\")|[^\\(\\)~\"])+(?<!:)(:>|:(?![:=])))",
543
+ "beginCaptures": {
544
+ "1": {
545
+ "name": "punctuation.section.type-constraint.ocaml"
546
+ }
547
+ },
548
+ "end": "(?<!:)(:>|:(?![:=]))(.*?)(\\))",
549
+ "endCaptures": {
550
+ "1": {
551
+ "name": "punctuation.separator.type-constraint.ocaml"
552
+ },
553
+ "2": {
554
+ "name": "storage.type.ocaml"
555
+ },
556
+ "3": {
557
+ "name": "punctuation.section.type-constraint.ocaml"
558
+ }
559
+ },
560
+ "name": "meta.type-constraint.ocaml",
561
+ "patterns": [
562
+ {
563
+ "include": "$self"
564
+ }
565
+ ]
566
+ },
567
+ {
568
+ "match": "^[ \\t]*#[a-zA-Z]+",
569
+ "name": "keyword.other.directive.ocaml"
570
+ },
571
+ {
572
+ "match": "^[ \\t]*#[0-9]*",
573
+ "name": "keyword.other.directive.line-number.ocaml"
574
+ },
575
+ {
576
+ "include": "#storagetypes"
577
+ },
578
+ {
579
+ "match": "\\b(mutable|ref)\\b",
580
+ "name": "keyword.other.storage.modifier.ocaml"
581
+ },
582
+ {
583
+ "match": "`[A-Za-z][a-zA-Z0-9'_]*\\b",
584
+ "name": "entity.name.type.variant.polymorphic.ocaml"
585
+ },
586
+ {
587
+ "match": "\\b[A-Z][a-zA-Z0-9'_]*\\b",
588
+ "name": "entity.name.type.variant.ocaml"
589
+ },
590
+ {
591
+ "match": "!=|:=|>|<",
592
+ "name": "keyword.operator.symbol.ocaml"
593
+ },
594
+ {
595
+ "match": "[*+\/-]\\.",
596
+ "name": "keyword.operator.infix.floating-point.ocaml"
597
+ },
598
+ {
599
+ "match": "~-\\.",
600
+ "name": "keyword.operator.prefix.floating-point.ocaml"
601
+ },
602
+ {
603
+ "match": "::",
604
+ "name": "punctuation.definition.list.constructor.ocaml"
605
+ },
606
+ {
607
+ "match": ";;",
608
+ "name": "punctuation.terminator.expression.ocaml"
609
+ },
610
+ {
611
+ "match": ";",
612
+ "name": "punctuation.separator.ocaml"
613
+ },
614
+ {
615
+ "match": "->",
616
+ "name": "punctuation.separator.function-return.ocaml"
617
+ },
618
+ {
619
+ "match": "[=<>@^&+\\-*\/$%|][|!$%&*+.\/:<=>?@^~-]*",
620
+ "name": "keyword.operator.infix.ocaml"
621
+ },
622
+ {
623
+ "match": "\\bnot\\b|!|[!\\?~][!$%&*+.\/:<=>?@^~-]+",
624
+ "name": "keyword.operator.prefix.ocaml"
625
+ },
626
+ {
627
+ "captures": {
628
+ "1": {
629
+ "name": "punctuation.separator.argument-label.ocaml"
630
+ }
631
+ },
632
+ "match": "~[a-z][a-z0-9'_]*(:)?",
633
+ "name": "entity.name.tag.label.ocaml"
634
+ },
635
+ {
636
+ "begin": "\\b(begin)\\b",
637
+ "beginCaptures": {
638
+ "1": {
639
+ "name": "keyword.control.begin-end.ocaml"
640
+ }
641
+ },
642
+ "end": "\\b(end)\\b",
643
+ "endCaptures": {
644
+ "1": {
645
+ "name": "keyword.control.begin-end.ocaml"
646
+ }
647
+ },
648
+ "name": "meta.begin-end-group.ocaml",
649
+ "patterns": [
650
+ {
651
+ "include": "$self"
652
+ }
653
+ ]
654
+ },
655
+ {
656
+ "begin": "\\b(for)\\b",
657
+ "beginCaptures": {
658
+ "1": {
659
+ "name": "keyword.control.for-loop.ocaml"
660
+ }
661
+ },
662
+ "end": "\\b(done)\\b",
663
+ "endCaptures": {
664
+ "1": {
665
+ "name": "keyword.control.for-loop.ocaml"
666
+ }
667
+ },
668
+ "name": "meta.for-loop.ocaml",
669
+ "patterns": [
670
+ {
671
+ "match": "\\bdo\\b",
672
+ "name": "keyword.control.loop.ocaml"
673
+ },
674
+ {
675
+ "include": "$self"
676
+ }
677
+ ]
678
+ },
679
+ {
680
+ "begin": "\\b(while)\\b",
681
+ "beginCaptures": {
682
+ "1": {
683
+ "name": "keyword.control.while-loop.ocaml"
684
+ }
685
+ },
686
+ "end": "\\b(done)\\b",
687
+ "endCaptures": {
688
+ "1": {
689
+ "name": "keyword.control.while-loop.ocaml"
690
+ }
691
+ },
692
+ "name": "meta.while-loop.ocaml",
693
+ "patterns": [
694
+ {
695
+ "match": "\\bdo\\b",
696
+ "name": "keyword.control.loop.ocaml"
697
+ },
698
+ {
699
+ "include": "$self"
700
+ }
701
+ ]
702
+ },
703
+ {
704
+ "begin": "\\(",
705
+ "end": "\\)",
706
+ "name": "meta.paren-group.ocaml",
707
+ "patterns": [
708
+ {
709
+ "include": "$self"
710
+ }
711
+ ]
712
+ },
713
+ {
714
+ "match": "\\b(and|land|lor|lsl|lsr|lxor|mod|or)\\b",
715
+ "name": "keyword.operator.ocaml"
716
+ },
717
+ {
718
+ "match": "\\b(downto|if|else|match|then|to|when|with|try)\\b",
719
+ "name": "keyword.control.ocaml"
720
+ },
721
+ {
722
+ "match": "\\b(as|assert|class|constraint|exception|functor|in|include|inherit|initializer|lazy|let|mod|module|mutable|new|object|open|private|rec|sig|struct|type|virtual)\\b",
723
+ "name": "keyword.other.ocaml"
724
+ },
725
+ {
726
+ "include": "#module-signature"
727
+ },
728
+ {
729
+ "match": "(\u2019|\u2018|\u201c|\u201d)",
730
+ "name": "invalid.illegal.unrecognized-character.ocaml"
731
+ }
732
+ ],
733
+ "repository": {
734
+ "arrays": {
735
+ "patterns": [
736
+ {
737
+ "begin": "(\\[\\|)",
738
+ "beginCaptures": {
739
+ "1": {
740
+ "name": "punctuation.definition.array.begin.ocaml"
741
+ }
742
+ },
743
+ "end": "(\\|])",
744
+ "endCaptures": {
745
+ "1": {
746
+ "name": "punctuation.definition.array.end.ocaml"
747
+ }
748
+ },
749
+ "name": "meta.array.ocaml",
750
+ "patterns": [
751
+ {
752
+ "include": "#arrays"
753
+ },
754
+ {
755
+ "include": "$self"
756
+ }
757
+ ]
758
+ }
759
+ ]
760
+ },
761
+ "comments": {
762
+ "patterns": [
763
+ {
764
+ "captures": {
765
+ "1": {
766
+ "name": "comment.block.empty.ocaml"
767
+ }
768
+ },
769
+ "match": "\\(\\*+(\\*)\\)",
770
+ "name": "comment.block.ocaml"
771
+ },
772
+ {
773
+ "begin": "\\(\\*",
774
+ "end": "\\*\\)",
775
+ "name": "comment.block.ocaml",
776
+ "patterns": [
777
+ {
778
+ "include": "#comments"
779
+ }
780
+ ]
781
+ },
782
+ {
783
+ "begin": "(?=[^\\\\])(\")",
784
+ "end": "\"",
785
+ "name": "comment.block.string.quoted.double.ocaml",
786
+ "patterns": [
787
+ {
788
+ "match": "\\\\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\\d\\d|[bnrt'\"\\\\])",
789
+ "name": "comment.block.string.constant.character.escape.ocaml"
790
+ }
791
+ ]
792
+ }
793
+ ]
794
+ },
795
+ "constants": {
796
+ "patterns": [
797
+ {
798
+ "captures": {
799
+ "1": {
800
+ "name": "meta.empty-typing-pair.ocaml"
801
+ },
802
+ "2": {
803
+ "name": "meta.empty-typing-pair.parens.ocaml"
804
+ },
805
+ "3": {
806
+ "name": "meta.empty-typing-pair.ocaml"
807
+ }
808
+ },
809
+ "match": "(?:\\[\\s*(\\])|\\((\\))|\\(\\s*(\\)))",
810
+ "name": "constant.language.pseudo-variable.ocaml"
811
+ },
812
+ {
813
+ "match": "\\b(true|false)\\b",
814
+ "name": "constant.language.boolean.ocaml"
815
+ },
816
+ {
817
+ "match": "\\b-?[0-9][0-9_]*((\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))",
818
+ "name": "constant.numeric.floating-point.ocaml"
819
+ },
820
+ {
821
+ "match": "\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))n",
822
+ "name": "constant.numeric.integer.nativeint.ocaml"
823
+ },
824
+ {
825
+ "match": "\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))L",
826
+ "name": "constant.numeric.integer.int64.ocaml"
827
+ },
828
+ {
829
+ "match": "\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))l",
830
+ "name": "constant.numeric.integer.int32.ocaml"
831
+ },
832
+ {
833
+ "match": "\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))",
834
+ "name": "constant.numeric.integer.ocaml"
835
+ },
836
+ {
837
+ "match": "'(.|\\\\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\\d\\d|[bnrt'\"\\\\]))'",
838
+ "name": "constant.character.ocaml"
839
+ }
840
+ ]
841
+ },
842
+ "definite_storagetypes": {
843
+ "patterns": [
844
+ {
845
+ "include": "#storagetypes"
846
+ },
847
+ {
848
+ "match": "\\b[a-zA-Z0-9'_]+\\b",
849
+ "name": "storage.type.ocaml"
850
+ }
851
+ ]
852
+ },
853
+ "lists": {
854
+ "patterns": [
855
+ {
856
+ "begin": "(\\[)(?!\\||<|>)",
857
+ "beginCaptures": {
858
+ "1": {
859
+ "name": "punctuation.definition.list.begin.ocaml"
860
+ }
861
+ },
862
+ "end": "(?<!\\||>)(\])",
863
+ "endCaptures": {
864
+ "1": {
865
+ "name": "punctuation.definition.list.end.ocaml"
866
+ }
867
+ },
868
+ "name": "meta.list.ocaml",
869
+ "patterns": [
870
+ {
871
+ "include": "#lists"
872
+ },
873
+ {
874
+ "include": "$self"
875
+ }
876
+ ]
877
+ }
878
+ ]
879
+ },
880
+ "matchpatterns": {
881
+ "patterns": [
882
+ {
883
+ "match": "\\b_\\b",
884
+ "name": "constant.language.universal-match.ocaml"
885
+ },
886
+ {
887
+ "match": "\\|(?=\\s*\\S)",
888
+ "name": "punctuation.separator.match-pattern.ocaml"
889
+ },
890
+ {
891
+ "begin": "(\\()(?=(?!=.*?->).*?\\|)",
892
+ "beginCaptures": {
893
+ "1": {
894
+ "name": "punctuation.definition.match-option.ocaml"
895
+ }
896
+ },
897
+ "end": "(\\))",
898
+ "endCaptures": {
899
+ "1": {
900
+ "name": "punctuation.definition.match-option.ocaml"
901
+ }
902
+ },
903
+ "name": "meta.match-option.ocaml",
904
+ "patterns": [
905
+ {
906
+ "match": "\\|",
907
+ "name": "punctuation.separator.match-option.ocaml"
908
+ },
909
+ {
910
+ "include": "#matchpatterns"
911
+ }
912
+ ]
913
+ },
914
+ {
915
+ "include": "#moduleref"
916
+ },
917
+ {
918
+ "include": "#constants"
919
+ },
920
+ {
921
+ "include": "#variables"
922
+ },
923
+ {
924
+ "include": "$self"
925
+ }
926
+ ]
927
+ },
928
+ "module-signature": {
929
+ "patterns": [
930
+ {
931
+ "begin": "(val)\\s+([a-z_][a-zA-Z0-9_']*)\\s*(:)",
932
+ "beginCaptures": {
933
+ "1": {
934
+ "name": "keyword.other.ocaml"
935
+ },
936
+ "2": {
937
+ "name": "entity.name.type.value-signature.ocaml"
938
+ },
939
+ "3": {
940
+ "name": "punctuation.separator.type-constraint.ocaml"
941
+ }
942
+ },
943
+ "end": "(?=\\b(type|val|external|class|module|end)\\b)|^\\s*$",
944
+ "name": "meta.module.signature.val.ocaml",
945
+ "patterns": [
946
+ {
947
+ "captures": {
948
+ "1": {
949
+ "name": "punctuation.definition.optional-parameter.ocaml"
950
+ },
951
+ "2": {
952
+ "name": "entity.name.tag.label.optional.ocaml"
953
+ },
954
+ "3": {
955
+ "name": "punctuation.separator.optional-parameter.ocaml"
956
+ }
957
+ },
958
+ "match": "(\\?)([a-z][a-zA-Z0-9_]*)\\s*(:)",
959
+ "name": "variable.parameter.ameter.optional.ocaml"
960
+ },
961
+ {
962
+ "begin": "([a-z][a-zA-Z0-9'_]*)\\s*(:)\\s*",
963
+ "beginCaptures": {
964
+ "1": {
965
+ "name": "entity.name.tag.label.ocaml"
966
+ },
967
+ "2": {
968
+ "name": "punctuation.separator.label.ocaml"
969
+ },
970
+ "3": {
971
+ "name": "storage.type.ocaml"
972
+ }
973
+ },
974
+ "end": "\\s",
975
+ "name": "variable.parameter.labeled.ocaml",
976
+ "patterns": [
977
+ {
978
+ "include": "#definite_storagetypes"
979
+ }
980
+ ]
981
+ },
982
+ {
983
+ "include": "#typedefs"
984
+ }
985
+ ]
986
+ },
987
+ {
988
+ "begin": "(external)\\s+([a-z_][a-zA-Z0-9_']*)\\s*(:)",
989
+ "beginCaptures": {
990
+ "1": {
991
+ "name": "keyword.other.ocaml"
992
+ },
993
+ "2": {
994
+ "name": "entity.name.type.external-signature.ocaml"
995
+ },
996
+ "3": {
997
+ "name": "punctuation.separator.type-constraint.ocaml"
998
+ }
999
+ },
1000
+ "end": "(?=\\b(type|val|external|class|module|let|end)\\b)|^\\s*$",
1001
+ "name": "meta.module.signature.external.ocaml",
1002
+ "patterns": [
1003
+ {
1004
+ "captures": {
1005
+ "1": {
1006
+ "name": "punctuation.definition.optional-parameter.ocaml"
1007
+ },
1008
+ "2": {
1009
+ "name": "entity.name.tag.label.optional.ocaml"
1010
+ },
1011
+ "3": {
1012
+ "name": "punctuation.separator.optional-parameter.ocaml"
1013
+ }
1014
+ },
1015
+ "match": "(\\?)([a-z][a-zA-Z0-9_]*)\\s*(:)",
1016
+ "name": "variable.parameter.optional.ocaml"
1017
+ },
1018
+ {
1019
+ "begin": "(~)([a-z][a-zA-Z0-9'_]*)\\s*(:)\\s*",
1020
+ "beginCaptures": {
1021
+ "1": {
1022
+ "name": "punctuation.definition.labeled-parameter.ocaml"
1023
+ },
1024
+ "2": {
1025
+ "name": "entity.name.tag.label.ocaml"
1026
+ },
1027
+ "3": {
1028
+ "name": "punctuation.separator.label.ocaml"
1029
+ }
1030
+ },
1031
+ "end": "\\s",
1032
+ "name": "variable.parameter.labeled.ocaml",
1033
+ "patterns": [
1034
+ {
1035
+ "include": "#variables"
1036
+ }
1037
+ ]
1038
+ },
1039
+ {
1040
+ "include": "#strings"
1041
+ },
1042
+ {
1043
+ "include": "#typedefs"
1044
+ }
1045
+ ]
1046
+ }
1047
+ ]
1048
+ },
1049
+ "moduleref": {
1050
+ "patterns": [
1051
+ {
1052
+ "beginCaptures": {
1053
+ "1": {
1054
+ "name": "support.other.module.ocaml"
1055
+ },
1056
+ "2": {
1057
+ "name": "punctuation.separator.module-reference.ocaml"
1058
+ }
1059
+ },
1060
+ "match": "\\b([A-Z][a-zA-Z0-9'_]*)(\\.)",
1061
+ "name": "meta.module-reference.ocaml"
1062
+ }
1063
+ ]
1064
+ },
1065
+ "storagetypes": {
1066
+ "patterns": [
1067
+ {
1068
+ "match": "\\b(int|char|float|string|list|array|bool|unit|exn|option|int32|int64|nativeint|format4|lazy_t)\\b",
1069
+ "name": "storage.type.ocaml"
1070
+ },
1071
+ {
1072
+ "match": "#[a-z_][a-zA-Z0-9_]*",
1073
+ "name": "storage.type.variant.polymorphic.ocaml"
1074
+ }
1075
+ ]
1076
+ },
1077
+ "strings": {
1078
+ "patterns": [
1079
+ {
1080
+ "begin": "(?=[^\\\\])(\")",
1081
+ "beginCaptures": {
1082
+ "1": {
1083
+ "name": "punctuation.definition.string.begin.ocaml"
1084
+ }
1085
+ },
1086
+ "end": "(\")",
1087
+ "endCaptures": {
1088
+ "1": {
1089
+ "name": "punctuation.definition.string.end.ocaml"
1090
+ }
1091
+ },
1092
+ "name": "string.quoted.double.ocaml",
1093
+ "patterns": [
1094
+ {
1095
+ "match": "\\\\$[ \\t]*",
1096
+ "name": "punctuation.separator.string.ignore-eol.ocaml"
1097
+ },
1098
+ {
1099
+ "match": "\\\\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\\d\\d|[bnrt'\"\\\\])",
1100
+ "name": "constant.character.string.escape.ocaml"
1101
+ },
1102
+ {
1103
+ "match": "\\\\[\\|\\(\\)1-9$^.*+?\\[\\]]",
1104
+ "name": "constant.character.regexp.escape.ocaml"
1105
+ },
1106
+ {
1107
+ "match": "\\\\(?!(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\\d\\d|[bnrt'\"\\\\]|[\\|\\(\\)1-9$^.*+?\\[\\]]|$[ \\t]*))(?:.)",
1108
+ "name": "invalid.illegal.character.string.escape"
1109
+ }
1110
+ ]
1111
+ }
1112
+ ]
1113
+ },
1114
+ "typedefs": {
1115
+ "patterns": [
1116
+ {
1117
+ "match": "\\|",
1118
+ "name": "punctuation.separator.variant-definition.ocaml"
1119
+ },
1120
+ {
1121
+ "include": "#comments"
1122
+ },
1123
+ {
1124
+ "begin": "\\(",
1125
+ "end": "\\)",
1126
+ "name": "meta.paren-group.ocaml",
1127
+ "patterns": [
1128
+ {
1129
+ "include": "#typedefs"
1130
+ }
1131
+ ]
1132
+ },
1133
+ {
1134
+ "match": "\\bof\\b",
1135
+ "name": "keyword.other.ocaml"
1136
+ },
1137
+ {
1138
+ "include": "#storagetypes"
1139
+ },
1140
+ {
1141
+ "match": "(?<=\\s|\\()['a-z_][a-zA-Z0-9_]*\\b",
1142
+ "name": "storage.type.ocaml"
1143
+ },
1144
+ {
1145
+ "captures": {
1146
+ "1": {
1147
+ "name": "support.other.module.ocaml"
1148
+ },
1149
+ "2": {
1150
+ "name": "storage.type.module.ocaml"
1151
+ }
1152
+ },
1153
+ "match": "\\b((?:[A-Z][a-zA-Z0-9'_]*)(?:\\.[A-Z][a-zA-Z0-9'_]+)*)(\\.[a-zA-Z0-9'_]+)",
1154
+ "name": "meta.module.type.ocaml"
1155
+ },
1156
+ {
1157
+ "begin": "(\\[(>|<)?)",
1158
+ "beginCaptures": {
1159
+ "1": {
1160
+ "name": "punctuation.definition.polymorphic-variant.ocaml"
1161
+ }
1162
+ },
1163
+ "end": "(\\])",
1164
+ "endCaptures": {
1165
+ "1": {
1166
+ "name": "punctuation.definition.polymorphic-variant.ocaml"
1167
+ }
1168
+ },
1169
+ "name": "meta.polymorphic-variant.definition.ocaml",
1170
+ "patterns": [
1171
+ {
1172
+ "include": "#typedefs"
1173
+ }
1174
+ ]
1175
+ },
1176
+ {
1177
+ "include": "$self"
1178
+ },
1179
+ {
1180
+ "match": "\\|",
1181
+ "name": "punctuation.separator.algebraic-type.ocaml"
1182
+ }
1183
+ ]
1184
+ },
1185
+ "variables": {
1186
+ "patterns": [
1187
+ {
1188
+ "match": "\\(\\)",
1189
+ "name": "variable.parameter.unit.ocaml"
1190
+ },
1191
+ {
1192
+ "include": "#constants"
1193
+ },
1194
+ {
1195
+ "include": "#moduleref"
1196
+ },
1197
+ {
1198
+ "begin": "(~)([a-z][a-zA-Z0-9'_]*)(\\s*:\\s*)?",
1199
+ "beginCaptures": {
1200
+ "1": {
1201
+ "name": "punctuation.definition.labeled-parameter.ocaml"
1202
+ },
1203
+ "2": {
1204
+ "name": "entity.name.tag.label.ocaml"
1205
+ },
1206
+ "3": {
1207
+ "name": "punctuation.separator.label.ocaml"
1208
+ }
1209
+ },
1210
+ "end": "(?=(->|\\s))",
1211
+ "name": "variable.parameter.labeled.ocaml",
1212
+ "patterns": [
1213
+ {
1214
+ "include": "#variables"
1215
+ }
1216
+ ]
1217
+ },
1218
+ {
1219
+ "captures": {
1220
+ "1": {
1221
+ "name": "punctuation.definition.optional-parameter.ocaml"
1222
+ },
1223
+ "2": {
1224
+ "name": "entity.name.tag.label.optional.ocaml"
1225
+ }
1226
+ },
1227
+ "match": "(\\?)([a-z][a-zA-Z0-9_]*)",
1228
+ "name": "variable.parameter.optional.ocaml"
1229
+ },
1230
+ {
1231
+ "begin": "(\\?)(\\()([a-z_][a-zA-Z0-9'_]*)\\s*(=)",
1232
+ "beginCaptures": {
1233
+ "1": {
1234
+ "name": "punctuation.definition.optional-parameter.ocaml"
1235
+ },
1236
+ "2": {
1237
+ "name": "punctuation.definition.optional-parameter.ocaml"
1238
+ },
1239
+ "3": {
1240
+ "name": "entity.name.tag.label.optional.ocaml"
1241
+ },
1242
+ "4": {
1243
+ "name": "punctuation.separator.optional-parameter-assignment.ocaml"
1244
+ }
1245
+ },
1246
+ "end": "(\\))",
1247
+ "endCaptures": {
1248
+ "1": {
1249
+ "name": "punctuation.definition.optional-parameter.ocaml"
1250
+ }
1251
+ },
1252
+ "name": "variable.parameter.optional.ocaml",
1253
+ "patterns": [
1254
+ {
1255
+ "include": "$self"
1256
+ }
1257
+ ]
1258
+ },
1259
+ {
1260
+ "begin": "(\\()(?=(~[a-z][a-zA-Z0-9_]*:|(\"(\\\\\"|[^\"])*\")|[^\\(\\)~\"])+(?<!:)(:>|:(?![:=])))",
1261
+ "beginCaptures": {
1262
+ "1": {
1263
+ "name": "punctuation.section.type-constraint.ocaml"
1264
+ }
1265
+ },
1266
+ "end": "(\\))",
1267
+ "endCaptures": {
1268
+ "1": {
1269
+ "name": "punctuation.section.type-constraint.ocaml"
1270
+ }
1271
+ },
1272
+ "name": "meta.parameter.type-constrained.ocaml",
1273
+ "patterns": [
1274
+ {
1275
+ "begin": "(?<!:)(:>|:(?![:=]))",
1276
+ "beginCaptures": {
1277
+ "1": {
1278
+ "name": "punctuation.separator.type-constraint.ocaml"
1279
+ }
1280
+ },
1281
+ "end": "(?=\\))",
1282
+ "name": "storage.type.ocaml",
1283
+ "patterns": [
1284
+ {
1285
+ "begin": "\\(",
1286
+ "end": "\\)",
1287
+ "name": "meta.paren.group"
1288
+ }
1289
+ ]
1290
+ },
1291
+ {
1292
+ "include": "#variables"
1293
+ }
1294
+ ]
1295
+ },
1296
+ {
1297
+ "include": "#comments"
1298
+ },
1299
+ {
1300
+ "begin": "\\(",
1301
+ "end": "\\)",
1302
+ "name": "meta.paren-group.ocaml",
1303
+ "patterns": [
1304
+ {
1305
+ "include": "#variables"
1306
+ }
1307
+ ]
1308
+ },
1309
+ {
1310
+ "begin": "(\\()",
1311
+ "beginCaptures": {
1312
+ "1": {
1313
+ "name": "punctuation.definition.tuple.ocaml"
1314
+ }
1315
+ },
1316
+ "end": "(\\))",
1317
+ "endCaptures": {
1318
+ "1": {
1319
+ "name": "punctuation.definition.tuple.ocaml"
1320
+ }
1321
+ },
1322
+ "name": "variable.parameter.tuple.ocaml",
1323
+ "patterns": [
1324
+ {
1325
+ "include": "#matchpatterns"
1326
+ },
1327
+ {
1328
+ "include": "#variables"
1329
+ },
1330
+ {
1331
+ "match": ",",
1332
+ "name": "punctuation.separator.tuple.ocaml"
1333
+ }
1334
+ ]
1335
+ },
1336
+ {
1337
+ "begin": "(\\{)",
1338
+ "beginCaptures": {
1339
+ "1": {
1340
+ "name": "punctuation.definition.record.ocaml"
1341
+ }
1342
+ },
1343
+ "end": "(\\})",
1344
+ "endCaptures": {
1345
+ "1": {
1346
+ "name": "punctuation.definition.record.ocaml"
1347
+ }
1348
+ },
1349
+ "name": "variable.parameter.record.ocaml",
1350
+ "patterns": [
1351
+ {
1352
+ "include": "#moduleref"
1353
+ },
1354
+ {
1355
+ "begin": "\\b([a-z][a-zA-Z0-9'_]*)\\s*(=)",
1356
+ "beginCaptures": {
1357
+ "1": {
1358
+ "name": "entity.name.tag.record.ocaml"
1359
+ },
1360
+ "2": {
1361
+ "name": "punctuation.separator.record.field-assignment.ocaml"
1362
+ }
1363
+ },
1364
+ "end": "(;)|(?=\\})",
1365
+ "endCaptures": {
1366
+ "1": {
1367
+ "name": "punctuation.separator.record.ocaml"
1368
+ }
1369
+ },
1370
+ "name": "meta.recordfield.match.ocaml",
1371
+ "patterns": [
1372
+ {
1373
+ "include": "#matchpatterns"
1374
+ }
1375
+ ]
1376
+ }
1377
+ ]
1378
+ },
1379
+ {
1380
+ "include": "#storagetypes"
1381
+ },
1382
+ {
1383
+ "match": "\\b[a-z_][a-zA-Z0-9'_]*",
1384
+ "name": "variable.parameter.ocaml"
1385
+ }
1386
+ ]
1387
+ }
1388
+ },
1389
+ "scopeName": "source.ocaml",
1390
+ "uuid": "F816FA69-6EE8-11D9-BF2D-000D93589AF6"
1391
+ }