ruby-uv 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +4 -0
  3. data/README.rdoc +79 -0
  4. data/Rakefile +1 -0
  5. data/bin/theme2latexrender +122 -0
  6. data/bin/theme2xhtmlrender +158 -0
  7. data/bin/uv +140 -0
  8. data/lib/uv/engine.rb +4 -0
  9. data/lib/uv/render_processor.rb +140 -0
  10. data/lib/uv/utility.rb +67 -0
  11. data/lib/uv/version.rb +3 -0
  12. data/lib/uv.rb +98 -0
  13. data/render/latex/active4d.render +132 -0
  14. data/render/latex/all_hallows_eve.render +96 -0
  15. data/render/latex/amy.render +171 -0
  16. data/render/latex/blackboard.render +111 -0
  17. data/render/latex/brilliance_black.render +552 -0
  18. data/render/latex/brilliance_dull.render +561 -0
  19. data/render/latex/cobalt.render +162 -0
  20. data/render/latex/dawn.render +126 -0
  21. data/render/latex/eiffel.render +132 -0
  22. data/render/latex/espresso_libre.render +123 -0
  23. data/render/latex/idle.render +93 -0
  24. data/render/latex/iplastic.render +99 -0
  25. data/render/latex/lazy.render +96 -0
  26. data/render/latex/mac_classic.render +135 -0
  27. data/render/latex/magicwb_amiga.render +117 -0
  28. data/render/latex/pastels_on_dark.render +204 -0
  29. data/render/latex/slush_poppies.render +123 -0
  30. data/render/latex/spacecadet.render +81 -0
  31. data/render/latex/sunburst.render +186 -0
  32. data/render/latex/twilight.render +153 -0
  33. data/render/latex/zenburnesque.render +126 -0
  34. data/render/old/txt2tags.render +131 -0
  35. data/render/xhtml/active4d.render +140 -0
  36. data/render/xhtml/all_hallows_eve.render +104 -0
  37. data/render/xhtml/amy.render +179 -0
  38. data/render/xhtml/blackboard.render +119 -0
  39. data/render/xhtml/brilliance_black.render +560 -0
  40. data/render/xhtml/brilliance_dull.render +569 -0
  41. data/render/xhtml/cobalt.render +170 -0
  42. data/render/xhtml/dawn.render +134 -0
  43. data/render/xhtml/eiffel.render +140 -0
  44. data/render/xhtml/espresso_libre.render +131 -0
  45. data/render/xhtml/idle.render +101 -0
  46. data/render/xhtml/iplastic.render +107 -0
  47. data/render/xhtml/lazy.render +104 -0
  48. data/render/xhtml/mac_classic.render +143 -0
  49. data/render/xhtml/magicwb_amiga.render +125 -0
  50. data/render/xhtml/pastels_on_dark.render +212 -0
  51. data/render/xhtml/railscasts.render +93 -0
  52. data/render/xhtml/slush_poppies.render +131 -0
  53. data/render/xhtml/spacecadet.render +83 -0
  54. data/render/xhtml/sunburst.render +194 -0
  55. data/render/xhtml/twilight.render +161 -0
  56. data/render/xhtml/zenburnesque.render +134 -0
  57. data/ruby-uv.gemspec +24 -0
  58. data/syntax/actionscript.syntax +97 -0
  59. data/syntax/active4d.syntax +276 -0
  60. data/syntax/active4d_html.syntax +311 -0
  61. data/syntax/active4d_ini.syntax +50 -0
  62. data/syntax/active4d_library.syntax +21 -0
  63. data/syntax/ada.syntax +33 -0
  64. data/syntax/antlr.syntax +151 -0
  65. data/syntax/apache.syntax +191 -0
  66. data/syntax/applescript.syntax +384 -0
  67. data/syntax/asp.syntax +70 -0
  68. data/syntax/asp_vb.net.syntax +129 -0
  69. data/syntax/bibtex.syntax +151 -0
  70. data/syntax/blog_html.syntax +41 -0
  71. data/syntax/blog_markdown.syntax +42 -0
  72. data/syntax/blog_text.syntax +27 -0
  73. data/syntax/blog_textile.syntax +27 -0
  74. data/syntax/build.syntax +53 -0
  75. data/syntax/bulletin_board.syntax +287 -0
  76. data/syntax/cake.syntax +55 -0
  77. data/syntax/camlp4.syntax +36 -0
  78. data/syntax/cm.syntax +32 -0
  79. data/syntax/coldfusion.syntax +119 -0
  80. data/syntax/context_free.syntax +176 -0
  81. data/syntax/cs.syntax +59 -0
  82. data/syntax/css.syntax +195 -0
  83. data/syntax/css_experimental.syntax +1925 -0
  84. data/syntax/csv.syntax +68 -0
  85. data/syntax/d.syntax +142 -0
  86. data/syntax/diff.syntax +81 -0
  87. data/syntax/dokuwiki.syntax +204 -0
  88. data/syntax/dot.syntax +47 -0
  89. data/syntax/doxygen.syntax +43 -0
  90. data/syntax/dylan.syntax +62 -0
  91. data/syntax/eiffel.syntax +78 -0
  92. data/syntax/erlang.syntax +922 -0
  93. data/syntax/f-script.syntax +80 -0
  94. data/syntax/fortran.syntax +141 -0
  95. data/syntax/fxscript.syntax +142 -0
  96. data/syntax/greasemonkey.syntax +34 -0
  97. data/syntax/gri.syntax +83 -0
  98. data/syntax/groovy.syntax +191 -0
  99. data/syntax/gtd.syntax +22 -0
  100. data/syntax/gtdalt.syntax +143 -0
  101. data/syntax/haml.syntax +88 -0
  102. data/syntax/haskell.syntax +88 -0
  103. data/syntax/html-asp.syntax +27 -0
  104. data/syntax/html.syntax +362 -0
  105. data/syntax/html_django.syntax +36 -0
  106. data/syntax/html_for_asp.net.syntax +424 -0
  107. data/syntax/html_mason.syntax +119 -0
  108. data/syntax/html_rails.syntax +40 -0
  109. data/syntax/html_tcl.syntax +26 -0
  110. data/syntax/icalendar.syntax +32 -0
  111. data/syntax/inform.syntax +48 -0
  112. data/syntax/ini.syntax +55 -0
  113. data/syntax/installer_distribution_script.syntax +77 -0
  114. data/syntax/io.syntax +81 -0
  115. data/syntax/java.syntax +211 -0
  116. data/syntax/javaproperties.syntax +20 -0
  117. data/syntax/javascript.syntax +256 -0
  118. data/syntax/javascript_+_prototype.syntax +72 -0
  119. data/syntax/javascript_+_prototype_bracketed.syntax +140 -0
  120. data/syntax/jquery_javascript.syntax +114 -0
  121. data/syntax/json.syntax +136 -0
  122. data/syntax/languagedefinition.syntax +708 -0
  123. data/syntax/latex.syntax +566 -0
  124. data/syntax/latex_beamer.syntax +41 -0
  125. data/syntax/latex_log.syntax +50 -0
  126. data/syntax/latex_memoir.syntax +64 -0
  127. data/syntax/lexflex.syntax +219 -0
  128. data/syntax/lighttpd.syntax +54 -0
  129. data/syntax/lilypond.syntax +492 -0
  130. data/syntax/lisp.syntax +61 -0
  131. data/syntax/literate_haskell.syntax +24 -0
  132. data/syntax/logo.syntax +29 -0
  133. data/syntax/logtalk.syntax +152 -0
  134. data/syntax/lua.syntax +86 -0
  135. data/syntax/m.syntax +142 -0
  136. data/syntax/macports_portfile.syntax +163 -0
  137. data/syntax/makefile.syntax +36 -0
  138. data/syntax/man.syntax +17 -0
  139. data/syntax/mediawiki.syntax +567 -0
  140. data/syntax/mips.syntax +66 -0
  141. data/syntax/mod_perl.syntax +50 -0
  142. data/syntax/modula-3.syntax +47 -0
  143. data/syntax/moinmoin.syntax +189 -0
  144. data/syntax/mootools.syntax +572 -0
  145. data/syntax/movable_type.syntax +162 -0
  146. data/syntax/multimarkdown.syntax +39 -0
  147. data/syntax/objective-c++.syntax +18 -0
  148. data/syntax/objective-c.syntax +233 -0
  149. data/syntax/ocaml.syntax +764 -0
  150. data/syntax/ocamllex.syntax +167 -0
  151. data/syntax/ocamlyacc.syntax +184 -0
  152. data/syntax/opengl.syntax +14 -0
  153. data/syntax/pascal.syntax +77 -0
  154. data/syntax/perl.syntax +1115 -0
  155. data/syntax/plain_text.syntax +32 -0
  156. data/syntax/postscript.syntax +114 -0
  157. data/syntax/processing.syntax +106 -0
  158. data/syntax/prolog.syntax +40 -0
  159. data/syntax/property_list.syntax +635 -0
  160. data/syntax/python.syntax +868 -0
  161. data/syntax/python_django.syntax +21 -0
  162. data/syntax/qmake_project.syntax +114 -0
  163. data/syntax/qt_c++.syntax +26 -0
  164. data/syntax/quake3_config.syntax +32 -0
  165. data/syntax/r.syntax +81 -0
  166. data/syntax/r_console.syntax +16 -0
  167. data/syntax/ragel.syntax +201 -0
  168. data/syntax/rd_r_documentation.syntax +91 -0
  169. data/syntax/regexp.syntax +50 -0
  170. data/syntax/release_notes.syntax +46 -0
  171. data/syntax/remind.syntax +253 -0
  172. data/syntax/restructuredtext.syntax +250 -0
  173. data/syntax/rez.syntax +80 -0
  174. data/syntax/ruby.syntax +1035 -0
  175. data/syntax/ruby_experimental.syntax +145 -0
  176. data/syntax/ruby_on_rails.syntax +88 -0
  177. data/syntax/s5.syntax +69 -0
  178. data/syntax/scheme.syntax +347 -0
  179. data/syntax/scilab.syntax +41 -0
  180. data/syntax/setext.syntax +147 -0
  181. data/syntax/shell-unix-generic.syntax +384 -0
  182. data/syntax/slate.syntax +149 -0
  183. data/syntax/sql.syntax +237 -0
  184. data/syntax/sql_rails.syntax +18 -0
  185. data/syntax/ssh-config.syntax +33 -0
  186. data/syntax/standard_ml.syntax +121 -0
  187. data/syntax/strings_file.syntax +39 -0
  188. data/syntax/subversion_commit_message.syntax +36 -0
  189. data/syntax/sweave.syntax +84 -0
  190. data/syntax/swig.syntax +57 -0
  191. data/syntax/tcl.syntax +152 -0
  192. data/syntax/template_toolkit.syntax +121 -0
  193. data/syntax/tex.syntax +86 -0
  194. data/syntax/tex_math.syntax +49 -0
  195. data/syntax/textile.syntax +215 -0
  196. data/syntax/tsv.syntax +50 -0
  197. data/syntax/twiki.syntax +241 -0
  198. data/syntax/txt2tags.syntax +79 -0
  199. data/syntax/vectorscript.syntax +57 -0
  200. data/syntax/xhtml_1.0.syntax +4027 -0
  201. data/syntax/xml.syntax +180 -0
  202. data/syntax/xml_strict.syntax +92 -0
  203. data/syntax/xsl.syntax +60 -0
  204. data/syntax/yaml.syntax +160 -0
  205. data/syntax/yui_javascript.syntax +176 -0
  206. data/test/test_uv.rb +17 -0
  207. data/vendor/assets/stylesheets/active4d.css +117 -0
  208. data/vendor/assets/stylesheets/all_hallows_eve.css +75 -0
  209. data/vendor/assets/stylesheets/all_uv_themes.css +4 -0
  210. data/vendor/assets/stylesheets/amy.css +150 -0
  211. data/vendor/assets/stylesheets/blackboard.css +91 -0
  212. data/vendor/assets/stylesheets/brilliance_black.css +608 -0
  213. data/vendor/assets/stylesheets/brilliance_dull.css +602 -0
  214. data/vendor/assets/stylesheets/cobalt.css +152 -0
  215. data/vendor/assets/stylesheets/dawn.css +124 -0
  216. data/vendor/assets/stylesheets/eiffel.css +124 -0
  217. data/vendor/assets/stylesheets/espresso_libre.css +112 -0
  218. data/vendor/assets/stylesheets/idle.css +65 -0
  219. data/vendor/assets/stylesheets/iplastic.css +83 -0
  220. data/vendor/assets/stylesheets/lazy.css +76 -0
  221. data/vendor/assets/stylesheets/mac_classic.css +126 -0
  222. data/vendor/assets/stylesheets/magicwb_amiga.css +107 -0
  223. data/vendor/assets/stylesheets/pastels_on_dark.css +191 -0
  224. data/vendor/assets/stylesheets/railscasts.css +74 -0
  225. data/vendor/assets/stylesheets/slush_poppies.css +88 -0
  226. data/vendor/assets/stylesheets/spacecadet.css +54 -0
  227. data/vendor/assets/stylesheets/sunburst.css +183 -0
  228. data/vendor/assets/stylesheets/twilight.css +140 -0
  229. data/vendor/assets/stylesheets/zenburnesque.css +94 -0
  230. metadata +302 -0
@@ -0,0 +1,922 @@
1
+ ---
2
+ name: Erlang
3
+ fileTypes:
4
+ - erl
5
+ - hrl
6
+ scopeName: source.erlang
7
+ repository:
8
+ macro-usage:
9
+ name: meta.macro-usage.erlang
10
+ captures:
11
+ "1":
12
+ name: keyword.operator.macro.erlang
13
+ "2":
14
+ name: entity.name.function.macro.erlang
15
+ match: (\?\??)\s*+([a-zA-Z\d@_]++)
16
+ list:
17
+ name: meta.structure.list.erlang
18
+ endCaptures:
19
+ "1":
20
+ name: punctuation.definition.list.end.erlang
21
+ begin: (\[)
22
+ beginCaptures:
23
+ "1":
24
+ name: punctuation.definition.list.begin.erlang
25
+ end: (\])
26
+ patterns:
27
+ - name: punctuation.separator.list.erlang
28
+ match: \||\|\||,
29
+ - include: "#everything-else"
30
+ import-export-directive:
31
+ patterns:
32
+ - name: meta.directive.import.erlang
33
+ endCaptures:
34
+ "1":
35
+ name: punctuation.definition.parameters.end.erlang
36
+ "2":
37
+ name: punctuation.section.directive.end.erlang
38
+ begin: ^\s*+(-)\s*+(import)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(,)
39
+ beginCaptures:
40
+ "1":
41
+ name: punctuation.section.directive.begin.erlang
42
+ "2":
43
+ name: keyword.control.directive.import.erlang
44
+ "3":
45
+ name: punctuation.definition.parameters.begin.erlang
46
+ "4":
47
+ name: entity.name.type.class.module.erlang
48
+ "5":
49
+ name: punctuation.separator.parameters.erlang
50
+ end: (\))\s*+(\.)
51
+ patterns:
52
+ - include: "#internal-function-list"
53
+ - name: meta.directive.export.erlang
54
+ endCaptures:
55
+ "1":
56
+ name: punctuation.definition.parameters.end.erlang
57
+ "2":
58
+ name: punctuation.section.directive.end.erlang
59
+ begin: ^\s*+(-)\s*+(export)\s*+(\()
60
+ beginCaptures:
61
+ "1":
62
+ name: punctuation.section.directive.begin.erlang
63
+ "2":
64
+ name: keyword.control.directive.export.erlang
65
+ "3":
66
+ name: punctuation.definition.parameters.begin.erlang
67
+ end: (\))\s*+(\.)
68
+ patterns:
69
+ - include: "#internal-function-list"
70
+ symbolic-operator:
71
+ name: keyword.operator.symbolic.erlang
72
+ match: \+\+|\+|--|-|\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!
73
+ number:
74
+ begin: (?=\d)
75
+ end: (?!\d)
76
+ patterns:
77
+ - name: constant.numeric.float.erlang
78
+ captures:
79
+ "1":
80
+ name: punctuation.separator.integer-float.erlang
81
+ "3":
82
+ name: punctuation.separator.float-exponent.erlang
83
+ match: \d++(\.)\d++(([eE][\+\-])?\d++)?
84
+ - name: constant.numeric.integer.binary.erlang
85
+ captures:
86
+ "1":
87
+ name: punctuation.separator.base-integer.erlang
88
+ match: 2(#)[0-1]++
89
+ - name: constant.numeric.integer.base-3.erlang
90
+ captures:
91
+ "1":
92
+ name: punctuation.separator.base-integer.erlang
93
+ match: 3(#)[0-2]++
94
+ - name: constant.numeric.integer.base-4.erlang
95
+ captures:
96
+ "1":
97
+ name: punctuation.separator.base-integer.erlang
98
+ match: 4(#)[0-3]++
99
+ - name: constant.numeric.integer.base-5.erlang
100
+ captures:
101
+ "1":
102
+ name: punctuation.separator.base-integer.erlang
103
+ match: 5(#)[0-4]++
104
+ - name: constant.numeric.integer.base-6.erlang
105
+ captures:
106
+ "1":
107
+ name: punctuation.separator.base-integer.erlang
108
+ match: 6(#)[0-5]++
109
+ - name: constant.numeric.integer.base-7.erlang
110
+ captures:
111
+ "1":
112
+ name: punctuation.separator.base-integer.erlang
113
+ match: 7(#)[0-6]++
114
+ - name: constant.numeric.integer.octal.erlang
115
+ captures:
116
+ "1":
117
+ name: punctuation.separator.base-integer.erlang
118
+ match: 8(#)[0-7]++
119
+ - name: constant.numeric.integer.base-9.erlang
120
+ captures:
121
+ "1":
122
+ name: punctuation.separator.base-integer.erlang
123
+ match: 9(#)[0-8]++
124
+ - name: constant.numeric.integer.decimal.erlang
125
+ captures:
126
+ "1":
127
+ name: punctuation.separator.base-integer.erlang
128
+ match: 10(#)\d++
129
+ - name: constant.numeric.integer.base-11.erlang
130
+ captures:
131
+ "1":
132
+ name: punctuation.separator.base-integer.erlang
133
+ match: 11(#)[\daA]++
134
+ - name: constant.numeric.integer.base-12.erlang
135
+ captures:
136
+ "1":
137
+ name: punctuation.separator.base-integer.erlang
138
+ match: 12(#)[\da-bA-B]++
139
+ - name: constant.numeric.integer.base-13.erlang
140
+ captures:
141
+ "1":
142
+ name: punctuation.separator.base-integer.erlang
143
+ match: 13(#)[\da-cA-C]++
144
+ - name: constant.numeric.integer.base-14.erlang
145
+ captures:
146
+ "1":
147
+ name: punctuation.separator.base-integer.erlang
148
+ match: 14(#)[\da-dA-D]++
149
+ - name: constant.numeric.integer.base-15.erlang
150
+ captures:
151
+ "1":
152
+ name: punctuation.separator.base-integer.erlang
153
+ match: 15(#)[\da-eA-E]++
154
+ - name: constant.numeric.integer.hexadecimal.erlang
155
+ captures:
156
+ "1":
157
+ name: punctuation.separator.base-integer.erlang
158
+ match: 16(#)\h++
159
+ - name: constant.numeric.integer.base-17.erlang
160
+ captures:
161
+ "1":
162
+ name: punctuation.separator.base-integer.erlang
163
+ match: 17(#)[\da-gA-G]++
164
+ - name: constant.numeric.integer.base-18.erlang
165
+ captures:
166
+ "1":
167
+ name: punctuation.separator.base-integer.erlang
168
+ match: 18(#)[\da-hA-H]++
169
+ - name: constant.numeric.integer.base-19.erlang
170
+ captures:
171
+ "1":
172
+ name: punctuation.separator.base-integer.erlang
173
+ match: 19(#)[\da-iA-I]++
174
+ - name: constant.numeric.integer.base-20.erlang
175
+ captures:
176
+ "1":
177
+ name: punctuation.separator.base-integer.erlang
178
+ match: 20(#)[\da-jA-J]++
179
+ - name: constant.numeric.integer.base-21.erlang
180
+ captures:
181
+ "1":
182
+ name: punctuation.separator.base-integer.erlang
183
+ match: 21(#)[\da-kA-K]++
184
+ - name: constant.numeric.integer.base-22.erlang
185
+ captures:
186
+ "1":
187
+ name: punctuation.separator.base-integer.erlang
188
+ match: 22(#)[\da-lA-L]++
189
+ - name: constant.numeric.integer.base-23.erlang
190
+ captures:
191
+ "1":
192
+ name: punctuation.separator.base-integer.erlang
193
+ match: 23(#)[\da-mA-M]++
194
+ - name: constant.numeric.integer.base-24.erlang
195
+ captures:
196
+ "1":
197
+ name: punctuation.separator.base-integer.erlang
198
+ match: 24(#)[\da-nA-N]++
199
+ - name: constant.numeric.integer.base-25.erlang
200
+ captures:
201
+ "1":
202
+ name: punctuation.separator.base-integer.erlang
203
+ match: 25(#)[\da-oA-O]++
204
+ - name: constant.numeric.integer.base-26.erlang
205
+ captures:
206
+ "1":
207
+ name: punctuation.separator.base-integer.erlang
208
+ match: 26(#)[\da-pA-P]++
209
+ - name: constant.numeric.integer.base-27.erlang
210
+ captures:
211
+ "1":
212
+ name: punctuation.separator.base-integer.erlang
213
+ match: 27(#)[\da-qA-Q]++
214
+ - name: constant.numeric.integer.base-28.erlang
215
+ captures:
216
+ "1":
217
+ name: punctuation.separator.base-integer.erlang
218
+ match: 28(#)[\da-rA-R]++
219
+ - name: constant.numeric.integer.base-29.erlang
220
+ captures:
221
+ "1":
222
+ name: punctuation.separator.base-integer.erlang
223
+ match: 29(#)[\da-sA-S]++
224
+ - name: constant.numeric.integer.base-30.erlang
225
+ captures:
226
+ "1":
227
+ name: punctuation.separator.base-integer.erlang
228
+ match: 30(#)[\da-tA-T]++
229
+ - name: constant.numeric.integer.base-31.erlang
230
+ captures:
231
+ "1":
232
+ name: punctuation.separator.base-integer.erlang
233
+ match: 31(#)[\da-uA-U]++
234
+ - name: constant.numeric.integer.base-32.erlang
235
+ captures:
236
+ "1":
237
+ name: punctuation.separator.base-integer.erlang
238
+ match: 32(#)[\da-vA-V]++
239
+ - name: constant.numeric.integer.base-33.erlang
240
+ captures:
241
+ "1":
242
+ name: punctuation.separator.base-integer.erlang
243
+ match: 33(#)[\da-wA-W]++
244
+ - name: constant.numeric.integer.base-34.erlang
245
+ captures:
246
+ "1":
247
+ name: punctuation.separator.base-integer.erlang
248
+ match: 34(#)[\da-xA-X]++
249
+ - name: constant.numeric.integer.base-35.erlang
250
+ captures:
251
+ "1":
252
+ name: punctuation.separator.base-integer.erlang
253
+ match: 35(#)[\da-yA-Y]++
254
+ - name: constant.numeric.integer.base-36.erlang
255
+ captures:
256
+ "1":
257
+ name: punctuation.separator.base-integer.erlang
258
+ match: 36(#)[\da-zA-Z]++
259
+ - name: invalid.illegal.integer.erlang
260
+ match: \d++#[\da-zA-Z]++
261
+ - name: constant.numeric.integer.decimal.erlang
262
+ match: \d++
263
+ internal-type-specifiers:
264
+ begin: (/)
265
+ beginCaptures:
266
+ "1":
267
+ name: punctuation.separator.value-type.erlang
268
+ end: (?=,|:|>>)
269
+ patterns:
270
+ - captures:
271
+ "1":
272
+ name: storage.type.erlang
273
+ "2":
274
+ name: storage.modifier.signedness.erlang
275
+ "3":
276
+ name: storage.modifier.endianness.erlang
277
+ "4":
278
+ name: storage.modifier.unit.erlang
279
+ "5":
280
+ name: punctuation.separator.type-specifiers.erlang
281
+ match: (integer|float|binary)|(signed|unsigned)|(big|little|native)|(unit)|(-)
282
+ character:
283
+ patterns:
284
+ - name: constant.character.erlang
285
+ captures:
286
+ "1":
287
+ name: punctuation.definition.character.erlang
288
+ "2":
289
+ name: constant.character.escape.erlang
290
+ "3":
291
+ name: punctuation.definition.escape.erlang
292
+ "5":
293
+ name: punctuation.definition.escape.erlang
294
+ match: (\$)((\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3}))
295
+ - name: invalid.illegal.character.erlang
296
+ match: \$\\\^?.?
297
+ - name: constant.character.erlang
298
+ captures:
299
+ "1":
300
+ name: punctuation.definition.character.erlang
301
+ match: (\$)\S
302
+ - name: invalid.illegal.character.erlang
303
+ match: \$.?
304
+ macro-directive:
305
+ patterns:
306
+ - name: meta.directive.ifdef.erlang
307
+ captures:
308
+ "6":
309
+ name: punctuation.section.directive.end.erlang
310
+ "1":
311
+ name: punctuation.section.directive.begin.erlang
312
+ "2":
313
+ name: keyword.control.directive.ifdef.erlang
314
+ "3":
315
+ name: punctuation.definition.parameters.begin.erlang
316
+ "4":
317
+ name: entity.name.function.macro.erlang
318
+ "5":
319
+ name: punctuation.definition.parameters.end.erlang
320
+ match: ^\s*+(-)\s*+(ifdef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.)
321
+ - name: meta.directive.ifndef.erlang
322
+ captures:
323
+ "6":
324
+ name: punctuation.section.directive.end.erlang
325
+ "1":
326
+ name: punctuation.section.directive.begin.erlang
327
+ "2":
328
+ name: keyword.control.directive.ifndef.erlang
329
+ "3":
330
+ name: punctuation.definition.parameters.begin.erlang
331
+ "4":
332
+ name: entity.name.function.macro.erlang
333
+ "5":
334
+ name: punctuation.definition.parameters.end.erlang
335
+ match: ^\s*+(-)\s*+(ifndef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.)
336
+ - name: meta.directive.undef.erlang
337
+ captures:
338
+ "6":
339
+ name: punctuation.section.directive.end.erlang
340
+ "1":
341
+ name: punctuation.section.directive.begin.erlang
342
+ "2":
343
+ name: keyword.control.directive.undef.erlang
344
+ "3":
345
+ name: punctuation.definition.parameters.begin.erlang
346
+ "4":
347
+ name: entity.name.function.macro.erlang
348
+ "5":
349
+ name: punctuation.definition.parameters.end.erlang
350
+ match: ^\s*+(-)\s*+(undef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.)
351
+ internal-record-body:
352
+ name: meta.structure.record.erlang
353
+ begin: (\{)
354
+ beginCaptures:
355
+ "1":
356
+ name: punctuation.definition.class.record.begin.erlang
357
+ end: (?=\})
358
+ patterns:
359
+ - endCaptures:
360
+ "1":
361
+ name: punctuation.separator.class.record.erlang
362
+ begin: (([a-z][a-zA-Z\d@_]*+)|(_))\s*+(=)
363
+ beginCaptures:
364
+ "2":
365
+ name: variable.other.field.erlang
366
+ "3":
367
+ name: variable.language.omitted.field.erlang
368
+ "4":
369
+ name: keyword.operator.assignment.erlang
370
+ end: (,)|(?=\})
371
+ patterns:
372
+ - include: "#everything-else"
373
+ - captures:
374
+ "1":
375
+ name: variable.other.field.erlang
376
+ "2":
377
+ name: punctuation.separator.class.record.erlang
378
+ match: ([a-z][a-zA-Z\d@_]*+)\s*+(,)?
379
+ - include: "#everything-else"
380
+ internal-function-list:
381
+ name: meta.structure.list.function.erlang
382
+ endCaptures:
383
+ "1":
384
+ name: punctuation.definition.list.end.erlang
385
+ begin: (\[)
386
+ beginCaptures:
387
+ "1":
388
+ name: punctuation.definition.list.begin.erlang
389
+ end: (\])
390
+ patterns:
391
+ - endCaptures:
392
+ "1":
393
+ name: punctuation.separator.list.erlang
394
+ begin: ([a-z][a-zA-Z\d@_]*+)\s*+(/)
395
+ beginCaptures:
396
+ "1":
397
+ name: entity.name.function.erlang
398
+ "2":
399
+ name: punctuation.separator.function-arity.erlang
400
+ end: (,)|(?=\])
401
+ patterns:
402
+ - include: "#everything-else"
403
+ - include: "#everything-else"
404
+ internal-expression-punctuation:
405
+ captures:
406
+ "1":
407
+ name: punctuation.separator.clause-head-body.erlang
408
+ "2":
409
+ name: punctuation.separator.clauses.erlang
410
+ "3":
411
+ name: punctuation.separator.expressions.erlang
412
+ match: (->)|(;)|(,)
413
+ directive:
414
+ patterns:
415
+ - name: meta.directive.erlang
416
+ endCaptures:
417
+ "1":
418
+ name: punctuation.definition.parameters.end.erlang
419
+ "2":
420
+ name: punctuation.section.directive.end.erlang
421
+ begin: ^\s*+(-)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\()
422
+ beginCaptures:
423
+ "1":
424
+ name: punctuation.section.directive.begin.erlang
425
+ "2":
426
+ name: keyword.control.directive.erlang
427
+ "3":
428
+ name: punctuation.definition.parameters.begin.erlang
429
+ end: (\))\s*+(\.)
430
+ patterns:
431
+ - include: "#everything-else"
432
+ - name: meta.directive.erlang
433
+ captures:
434
+ "1":
435
+ name: punctuation.section.directive.begin.erlang
436
+ "2":
437
+ name: keyword.control.directive.erlang
438
+ "3":
439
+ name: punctuation.section.directive.end.erlang
440
+ match: ^\s*+(-)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\.)
441
+ binary:
442
+ name: meta.structure.binary.erlang
443
+ endCaptures:
444
+ "1":
445
+ name: punctuation.definition.binary.end.erlang
446
+ begin: (<<)
447
+ beginCaptures:
448
+ "1":
449
+ name: punctuation.definition.binary.begin.erlang
450
+ end: (>>)
451
+ patterns:
452
+ - captures:
453
+ "1":
454
+ name: punctuation.separator.binary.erlang
455
+ "2":
456
+ name: punctuation.separator.value-size.erlang
457
+ match: (,)|(:)
458
+ - include: "#internal-type-specifiers"
459
+ - include: "#everything-else"
460
+ function:
461
+ name: meta.function.erlang
462
+ endCaptures:
463
+ "1":
464
+ name: punctuation.terminator.function.erlang
465
+ begin: ^\s*+([a-z][a-zA-Z\d@_]*+)\s*+(?=\()
466
+ beginCaptures:
467
+ "1":
468
+ name: entity.name.function.definition.erlang
469
+ end: (\.)
470
+ patterns:
471
+ - endCaptures:
472
+ "1":
473
+ name: punctuation.separator.clauses.erlang
474
+ begin: (?=\()
475
+ end: (;)|(?=\.)
476
+ patterns:
477
+ - include: "#internal-function-parts"
478
+ - captures:
479
+ "1":
480
+ name: entity.name.function.erlang
481
+ match: ^\s*+([a-z][a-zA-Z\d@_]*+)\s*+(?=\()
482
+ - include: "#everything-else"
483
+ expression:
484
+ patterns:
485
+ - name: meta.expression.if.erlang
486
+ endCaptures:
487
+ "1":
488
+ name: keyword.control.end.erlang
489
+ begin: \b(if)\b
490
+ beginCaptures:
491
+ "1":
492
+ name: keyword.control.if.erlang
493
+ end: \b(end)\b
494
+ patterns:
495
+ - include: "#internal-expression-punctuation"
496
+ - include: "#everything-else"
497
+ - name: meta.expression.case.erlang
498
+ endCaptures:
499
+ "1":
500
+ name: keyword.control.end.erlang
501
+ begin: \b(case)\b
502
+ beginCaptures:
503
+ "1":
504
+ name: keyword.control.case.erlang
505
+ end: \b(end)\b
506
+ patterns:
507
+ - include: "#internal-expression-punctuation"
508
+ - include: "#everything-else"
509
+ - name: meta.expression.receive.erlang
510
+ endCaptures:
511
+ "1":
512
+ name: keyword.control.end.erlang
513
+ begin: \b(receive)\b
514
+ beginCaptures:
515
+ "1":
516
+ name: keyword.control.receive.erlang
517
+ end: \b(end)\b
518
+ patterns:
519
+ - include: "#internal-expression-punctuation"
520
+ - include: "#everything-else"
521
+ - captures:
522
+ "6":
523
+ name: punctuation.separator.function-arity.erlang
524
+ "1":
525
+ name: keyword.control.fun.erlang
526
+ "3":
527
+ name: entity.name.type.class.module.erlang
528
+ "4":
529
+ name: punctuation.separator.module-function.erlang
530
+ "5":
531
+ name: entity.name.function.erlang
532
+ match: \b(fun)\s*+(([a-z][a-zA-Z\d@_]*+)\s*+(:)\s*+)?([a-z][a-zA-Z\d@_]*+)\s*(/)
533
+ - name: meta.expression.fun.erlang
534
+ endCaptures:
535
+ "1":
536
+ name: keyword.control.end.erlang
537
+ begin: \b(fun)\b
538
+ beginCaptures:
539
+ "1":
540
+ name: keyword.control.fun.erlang
541
+ end: \b(end)\b
542
+ patterns:
543
+ - endCaptures:
544
+ "1":
545
+ name: punctuation.separator.clauses.erlang
546
+ begin: (?=\()
547
+ end: (;)|(?=\bend\b)
548
+ patterns:
549
+ - include: "#internal-function-parts"
550
+ - include: "#everything-else"
551
+ - name: meta.expression.try.erlang
552
+ endCaptures:
553
+ "1":
554
+ name: keyword.control.end.erlang
555
+ begin: \b(try)\b
556
+ beginCaptures:
557
+ "1":
558
+ name: keyword.control.try.erlang
559
+ end: \b(end)\b
560
+ patterns:
561
+ - include: "#internal-expression-punctuation"
562
+ - include: "#everything-else"
563
+ - name: meta.expression.begin.erlang
564
+ endCaptures:
565
+ "1":
566
+ name: keyword.control.end.erlang
567
+ begin: \b(begin)\b
568
+ beginCaptures:
569
+ "1":
570
+ name: keyword.control.begin.erlang
571
+ end: \b(end)\b
572
+ patterns:
573
+ - include: "#internal-expression-punctuation"
574
+ - include: "#everything-else"
575
+ - name: meta.expression.query.erlang
576
+ endCaptures:
577
+ "1":
578
+ name: keyword.control.end.erlang
579
+ begin: \b(query)\b
580
+ beginCaptures:
581
+ "1":
582
+ name: keyword.control.query.erlang
583
+ end: \b(end)\b
584
+ patterns:
585
+ - include: "#everything-else"
586
+ module-directive:
587
+ name: meta.directive.module.erlang
588
+ captures:
589
+ "6":
590
+ name: punctuation.section.directive.end.erlang
591
+ "1":
592
+ name: punctuation.section.directive.begin.erlang
593
+ "2":
594
+ name: keyword.control.directive.module.erlang
595
+ "3":
596
+ name: punctuation.definition.parameters.begin.erlang
597
+ "4":
598
+ name: entity.name.type.class.module.definition.erlang
599
+ "5":
600
+ name: punctuation.definition.parameters.end.erlang
601
+ match: ^\s*+(-)\s*+(module)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\))\s*+(\.)
602
+ define-directive:
603
+ patterns:
604
+ - name: meta.directive.define.erlang
605
+ endCaptures:
606
+ "1":
607
+ name: punctuation.definition.parameters.end.erlang
608
+ "2":
609
+ name: punctuation.section.directive.end.erlang
610
+ begin: ^\s*+(-)\s*+(define)\s*+(\()\s*+([a-zA-Z\d@_]++)\s*+(,)
611
+ beginCaptures:
612
+ "1":
613
+ name: punctuation.section.directive.begin.erlang
614
+ "2":
615
+ name: keyword.control.directive.define.erlang
616
+ "3":
617
+ name: punctuation.definition.parameters.begin.erlang
618
+ "4":
619
+ name: entity.name.function.macro.definition.erlang
620
+ "5":
621
+ name: punctuation.separator.parameters.erlang
622
+ end: (\))\s*+(\.)
623
+ patterns:
624
+ - include: "#everything-else"
625
+ - name: meta.directive.define.erlang
626
+ endCaptures:
627
+ "1":
628
+ name: punctuation.definition.parameters.end.erlang
629
+ "2":
630
+ name: punctuation.section.directive.end.erlang
631
+ begin: (?=^\s*+-\s*+define\s*+\(\s*+[a-zA-Z\d@_]++\s*+\()
632
+ end: (\))\s*+(\.)
633
+ patterns:
634
+ - endCaptures:
635
+ "1":
636
+ name: punctuation.definition.parameters.end.erlang
637
+ "2":
638
+ name: punctuation.separator.parameters.erlang
639
+ begin: ^\s*+(-)\s*+(define)\s*+(\()\s*+([a-zA-Z\d@_]++)\s*+(\()
640
+ beginCaptures:
641
+ "1":
642
+ name: punctuation.section.directive.begin.erlang
643
+ "2":
644
+ name: keyword.control.directive.define.erlang
645
+ "3":
646
+ name: punctuation.definition.parameters.begin.erlang
647
+ "4":
648
+ name: entity.name.function.macro.definition.erlang
649
+ "5":
650
+ name: punctuation.definition.parameters.begin.erlang
651
+ end: (\))\s*(,)
652
+ patterns:
653
+ - name: punctuation.separator.parameters.erlang
654
+ match: ","
655
+ - include: "#everything-else"
656
+ - name: punctuation.separator.define.erlang
657
+ match: \|\||\||:|;|,|\.|->
658
+ - include: "#everything-else"
659
+ tuple:
660
+ name: meta.structure.tuple.erlang
661
+ endCaptures:
662
+ "1":
663
+ name: punctuation.definition.tuple.end.erlang
664
+ begin: (\{)
665
+ beginCaptures:
666
+ "1":
667
+ name: punctuation.definition.tuple.begin.erlang
668
+ end: (\})
669
+ patterns:
670
+ - name: punctuation.separator.tuple.erlang
671
+ match: ","
672
+ - include: "#everything-else"
673
+ textual-operator:
674
+ name: keyword.operator.textual.erlang
675
+ match: \b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\b
676
+ record-directive:
677
+ name: meta.directive.record.erlang
678
+ endCaptures:
679
+ "1":
680
+ name: meta.structure.record.erlang
681
+ "2":
682
+ name: punctuation.definition.class.record.end.erlang
683
+ "3":
684
+ name: punctuation.definition.parameters.end.erlang
685
+ "4":
686
+ name: punctuation.section.directive.end.erlang
687
+ begin: ^\s*+(-)\s*+(record)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(,)
688
+ beginCaptures:
689
+ "1":
690
+ name: punctuation.section.directive.begin.erlang
691
+ "2":
692
+ name: keyword.control.directive.import.erlang
693
+ "3":
694
+ name: punctuation.definition.parameters.begin.erlang
695
+ "4":
696
+ name: entity.name.type.class.record.definition.erlang
697
+ "5":
698
+ name: punctuation.separator.parameters.erlang
699
+ end: ((\}))\s*+(\))\s*+(\.)
700
+ patterns:
701
+ - include: "#internal-record-body"
702
+ function-call:
703
+ name: meta.function-call.erlang
704
+ endCaptures:
705
+ "1":
706
+ name: punctuation.definition.parameters.end.erlang
707
+ begin: (?=[a-z][a-zA-Z\d@_]*+\s*+(\(|:\s*+[a-z][a-zA-Z\d@_]*+\s*+\())
708
+ end: (\))
709
+ patterns:
710
+ - begin: ((erlang)\s*+(:)\s*+)?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)\s*+(\()
711
+ beginCaptures:
712
+ "2":
713
+ name: entity.name.type.class.module.erlang
714
+ "3":
715
+ name: punctuation.separator.module-function.erlang
716
+ "4":
717
+ name: entity.name.function.guard.erlang
718
+ "5":
719
+ name: punctuation.definition.parameters.begin.erlang
720
+ end: (?=\))
721
+ patterns:
722
+ - name: punctuation.separator.parameters.erlang
723
+ match: ","
724
+ - include: "#everything-else"
725
+ - begin: (([a-z][a-zA-Z\d@_]*+)\s*+(:)\s*+)?([a-z][a-zA-Z\d@_]*+)\s*+(\()
726
+ beginCaptures:
727
+ "2":
728
+ name: entity.name.type.class.module.erlang
729
+ "3":
730
+ name: punctuation.separator.module-function.erlang
731
+ "4":
732
+ name: entity.name.function.erlang
733
+ "5":
734
+ name: punctuation.definition.parameters.begin.erlang
735
+ end: (?=\))
736
+ patterns:
737
+ - name: punctuation.separator.parameters.erlang
738
+ match: ","
739
+ - include: "#everything-else"
740
+ everything-else:
741
+ patterns:
742
+ - include: "#comment"
743
+ - include: "#record-usage"
744
+ - include: "#macro-usage"
745
+ - include: "#expression"
746
+ - include: "#keyword"
747
+ - include: "#textual-operator"
748
+ - include: "#function-call"
749
+ - include: "#tuple"
750
+ - include: "#list"
751
+ - include: "#binary"
752
+ - include: "#parenthesized-expression"
753
+ - include: "#character"
754
+ - include: "#number"
755
+ - include: "#atom"
756
+ - include: "#string"
757
+ - include: "#symbolic-operator"
758
+ - include: "#variable"
759
+ record-usage:
760
+ patterns:
761
+ - name: meta.record-usage.erlang
762
+ captures:
763
+ "1":
764
+ name: keyword.operator.record.erlang
765
+ "2":
766
+ name: entity.name.type.class.record.erlang
767
+ "3":
768
+ name: punctuation.separator.record-field.erlang
769
+ "4":
770
+ name: variable.other.field.erlang
771
+ match: (#)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\.)\s*+([a-z][a-zA-Z\d@_]*+)
772
+ - name: meta.record-usage.erlang
773
+ endCaptures:
774
+ "1":
775
+ name: meta.structure.record.erlang
776
+ "2":
777
+ name: punctuation.definition.class.record.end.erlang
778
+ begin: (#)\s*+([a-z][a-zA-Z\d@_]*+)
779
+ beginCaptures:
780
+ "1":
781
+ name: keyword.operator.record.erlang
782
+ "2":
783
+ name: entity.name.type.class.record.erlang
784
+ end: ((\}))
785
+ patterns:
786
+ - include: "#internal-record-body"
787
+ parenthesized-expression:
788
+ name: meta.expression.parenthesized
789
+ endCaptures:
790
+ "1":
791
+ name: punctuation.section.expression.end.erlang
792
+ begin: (\()
793
+ beginCaptures:
794
+ "1":
795
+ name: punctuation.section.expression.begin.erlang
796
+ end: (\))
797
+ patterns:
798
+ - include: "#everything-else"
799
+ keyword:
800
+ name: keyword.control.erlang
801
+ match: \b(after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\b
802
+ internal-function-parts:
803
+ patterns:
804
+ - endCaptures:
805
+ "1":
806
+ name: punctuation.separator.clause-head-body.erlang
807
+ begin: (?=\()
808
+ end: (->)
809
+ patterns:
810
+ - endCaptures:
811
+ "1":
812
+ name: punctuation.definition.parameters.end.erlang
813
+ begin: (\()
814
+ beginCaptures:
815
+ "1":
816
+ name: punctuation.definition.parameters.begin.erlang
817
+ end: (\))
818
+ patterns:
819
+ - name: punctuation.separator.parameters.erlang
820
+ match: ","
821
+ - include: "#everything-else"
822
+ - name: punctuation.separator.guards.erlang
823
+ match: ,|;
824
+ - include: "#everything-else"
825
+ - name: punctuation.separator.expressions.erlang
826
+ match: ","
827
+ - include: "#everything-else"
828
+ comment:
829
+ name: comment.line.erlang
830
+ begin: (%)
831
+ beginCaptures:
832
+ "1":
833
+ name: punctuation.definition.comment.erlang
834
+ end: $\n?
835
+ variable:
836
+ captures:
837
+ "1":
838
+ name: variable.other.erlang
839
+ "2":
840
+ name: variable.language.omitted.erlang
841
+ match: (_[a-zA-Z\d@_]++|[A-Z][a-zA-Z\d@_]*+)|(_)
842
+ string:
843
+ name: string.quoted.double.erlang
844
+ endCaptures:
845
+ "1":
846
+ name: punctuation.definition.string.end.erlang
847
+ begin: (")
848
+ beginCaptures:
849
+ "1":
850
+ name: punctuation.definition.string.begin.erlang
851
+ end: (")
852
+ patterns:
853
+ - name: constant.character.escape.erlang
854
+ captures:
855
+ "1":
856
+ name: punctuation.definition.escape.erlang
857
+ "3":
858
+ name: punctuation.definition.escape.erlang
859
+ match: (\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3})
860
+ - name: invalid.illegal.string.erlang
861
+ match: \\\^?.?
862
+ - name: constant.other.placeholder.erlang
863
+ captures:
864
+ "6":
865
+ name: punctuation.separator.placeholder-parts.erlang
866
+ "12":
867
+ name: punctuation.separator.placeholder-parts.erlang
868
+ "8":
869
+ name: punctuation.separator.placeholder-parts.erlang
870
+ "1":
871
+ name: punctuation.definition.placeholder.erlang
872
+ "3":
873
+ name: punctuation.separator.placeholder-parts.erlang
874
+ "4":
875
+ name: punctuation.separator.placeholder-parts.erlang
876
+ "10":
877
+ name: punctuation.separator.placeholder-parts.erlang
878
+ match: (~)((\-)?\d++|(\*))?((\.)(\d++|(\*)))?((\.)((\*)|.))?[~cfegswpWPBX#bx\+ni]
879
+ - name: constant.other.placeholder.erlang
880
+ captures:
881
+ "1":
882
+ name: punctuation.definition.placeholder.erlang
883
+ "2":
884
+ name: punctuation.separator.placeholder-parts.erlang
885
+ match: (~)(\*)?(\d++)?[~du\-#fsacl]
886
+ - name: invalid.illegal.string.erlang
887
+ match: ~.?
888
+ atom:
889
+ patterns:
890
+ - name: constant.other.symbol.quoted.single.erlang
891
+ endCaptures:
892
+ "1":
893
+ name: punctuation.definition.symbol.end.erlang
894
+ begin: (')
895
+ beginCaptures:
896
+ "1":
897
+ name: punctuation.definition.symbol.begin.erlang
898
+ end: (')
899
+ patterns:
900
+ - name: constant.other.symbol.escape.erlang
901
+ captures:
902
+ "1":
903
+ name: punctuation.definition.escape.erlang
904
+ "3":
905
+ name: punctuation.definition.escape.erlang
906
+ match: (\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3})
907
+ - name: invalid.illegal.atom.erlang
908
+ match: \\\^?.?
909
+ - name: constant.other.symbol.unquoted.erlang
910
+ match: "[a-z][a-zA-Z\\d@_]*+"
911
+ uuid: 58EA597D-5158-4BF7-9FB2-B05135D1E166
912
+ patterns:
913
+ - include: "#module-directive"
914
+ - include: "#import-export-directive"
915
+ - include: "#record-directive"
916
+ - include: "#define-directive"
917
+ - include: "#macro-directive"
918
+ - include: "#directive"
919
+ - include: "#function"
920
+ - include: "#everything-else"
921
+ keyEquivalent: ^~E
922
+ comment: The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp