ultraviolet 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (212) hide show
  1. data/History.txt +5 -0
  2. data/Manifest.txt +216 -0
  3. data/README.txt +52 -0
  4. data/Rakefile +51 -0
  5. data/bin/theme2render +104 -0
  6. data/bin/uv +162 -0
  7. data/lib/uv.rb +84 -0
  8. data/lib/uv/html_processor.rb +89 -0
  9. data/render/old/txt2tags.render +131 -0
  10. data/render/xhtml/active4d.render +105 -0
  11. data/render/xhtml/all_hallows_eve.render +69 -0
  12. data/render/xhtml/amy.render +144 -0
  13. data/render/xhtml/blackboard.render +84 -0
  14. data/render/xhtml/brilliance_black.render +575 -0
  15. data/render/xhtml/brilliance_dull.render +534 -0
  16. data/render/xhtml/cobalt.render +135 -0
  17. data/render/xhtml/dawn.render +99 -0
  18. data/render/xhtml/eiffel.render +105 -0
  19. data/render/xhtml/espresso_libre.render +96 -0
  20. data/render/xhtml/files/css/active4d.css +114 -0
  21. data/render/xhtml/files/css/all_hallows_eve.css +72 -0
  22. data/render/xhtml/files/css/amy.css +144 -0
  23. data/render/xhtml/files/css/blackboard.css +88 -0
  24. data/render/xhtml/files/css/brilliance_black.css +632 -0
  25. data/render/xhtml/files/css/brilliance_dull.css +579 -0
  26. data/render/xhtml/files/css/cobalt.css +149 -0
  27. data/render/xhtml/files/css/dawn.css +121 -0
  28. data/render/xhtml/files/css/eiffel.css +121 -0
  29. data/render/xhtml/files/css/espresso_libre.css +109 -0
  30. data/render/xhtml/files/css/idle.css +62 -0
  31. data/render/xhtml/files/css/iplastic.css +80 -0
  32. data/render/xhtml/files/css/lazy.css +73 -0
  33. data/render/xhtml/files/css/mac_classic.css +123 -0
  34. data/render/xhtml/files/css/magicwb_amiga.css +101 -0
  35. data/render/xhtml/files/css/pastels_on_dark.css +188 -0
  36. data/render/xhtml/files/css/slush_poppies.css +85 -0
  37. data/render/xhtml/files/css/spacecadet.css +51 -0
  38. data/render/xhtml/files/css/sunburst.css +180 -0
  39. data/render/xhtml/files/css/twilight.css +137 -0
  40. data/render/xhtml/files/css/zenburnesque.css +88 -0
  41. data/render/xhtml/idle.render +66 -0
  42. data/render/xhtml/iplastic.render +72 -0
  43. data/render/xhtml/lazy.render +69 -0
  44. data/render/xhtml/mac_classic.render +108 -0
  45. data/render/xhtml/magicwb_amiga.render +90 -0
  46. data/render/xhtml/pastels_on_dark.render +177 -0
  47. data/render/xhtml/slush_poppies.render +96 -0
  48. data/render/xhtml/spacecadet.render +54 -0
  49. data/render/xhtml/sunburst.render +159 -0
  50. data/render/xhtml/twilight.render +126 -0
  51. data/render/xhtml/zenburnesque.render +99 -0
  52. data/syntax/actionscript.syntax +97 -0
  53. data/syntax/active4d.syntax +276 -0
  54. data/syntax/active4d_html.syntax +311 -0
  55. data/syntax/active4d_ini.syntax +50 -0
  56. data/syntax/active4d_library.syntax +21 -0
  57. data/syntax/ada.syntax +33 -0
  58. data/syntax/antlr.syntax +128 -0
  59. data/syntax/apache.syntax +176 -0
  60. data/syntax/applescript.syntax +384 -0
  61. data/syntax/asp.syntax +70 -0
  62. data/syntax/asp_vb.net.syntax +129 -0
  63. data/syntax/bibtex.syntax +151 -0
  64. data/syntax/blog_html.syntax +41 -0
  65. data/syntax/blog_markdown.syntax +42 -0
  66. data/syntax/blog_text.syntax +27 -0
  67. data/syntax/blog_textile.syntax +27 -0
  68. data/syntax/buggy/nemerle.yaml +74 -0
  69. data/syntax/build.syntax +53 -0
  70. data/syntax/bulletin_board.syntax +287 -0
  71. data/syntax/c++.syntax +109 -0
  72. data/syntax/c.syntax +326 -0
  73. data/syntax/cake.syntax +55 -0
  74. data/syntax/camlp4.syntax +36 -0
  75. data/syntax/coldfusion.syntax +118 -0
  76. data/syntax/context_free.syntax +176 -0
  77. data/syntax/cs.syntax +59 -0
  78. data/syntax/css.syntax +190 -0
  79. data/syntax/css_experimental.syntax +1925 -0
  80. data/syntax/csv.syntax +68 -0
  81. data/syntax/d.syntax +138 -0
  82. data/syntax/diff.syntax +81 -0
  83. data/syntax/dokuwiki.syntax +204 -0
  84. data/syntax/dot.syntax +47 -0
  85. data/syntax/doxygen.syntax +43 -0
  86. data/syntax/dylan.syntax +62 -0
  87. data/syntax/eiffel.syntax +78 -0
  88. data/syntax/erlang.syntax +922 -0
  89. data/syntax/f-script.syntax +80 -0
  90. data/syntax/fortran.syntax +141 -0
  91. data/syntax/fxscript.syntax +142 -0
  92. data/syntax/greasemonkey.syntax +34 -0
  93. data/syntax/gri.syntax +83 -0
  94. data/syntax/groovy.syntax +189 -0
  95. data/syntax/gtd2_text.syntax +31 -0
  96. data/syntax/gtdalt.syntax +143 -0
  97. data/syntax/haml.syntax +88 -0
  98. data/syntax/haskell.syntax +88 -0
  99. data/syntax/html-asp.syntax +27 -0
  100. data/syntax/html.syntax +362 -0
  101. data/syntax/html_django.syntax +36 -0
  102. data/syntax/html_for_asp.net.syntax +424 -0
  103. data/syntax/html_mason.syntax +119 -0
  104. data/syntax/html_rails.syntax +40 -0
  105. data/syntax/html_tcl.syntax +26 -0
  106. data/syntax/icalendar.syntax +32 -0
  107. data/syntax/inform.syntax +48 -0
  108. data/syntax/ini.syntax +54 -0
  109. data/syntax/installer_distribution_script.syntax +77 -0
  110. data/syntax/io.syntax +81 -0
  111. data/syntax/java.syntax +211 -0
  112. data/syntax/javaproperties.syntax +20 -0
  113. data/syntax/javascript.syntax +255 -0
  114. data/syntax/javascript_+_prototype.syntax +72 -0
  115. data/syntax/javascript_+_prototype_bracketed.syntax +140 -0
  116. data/syntax/jquery_javascript.syntax +114 -0
  117. data/syntax/json.syntax +136 -0
  118. data/syntax/languagedefinition.syntax +697 -0
  119. data/syntax/latex.syntax +566 -0
  120. data/syntax/latex_beamer.syntax +41 -0
  121. data/syntax/latex_log.syntax +50 -0
  122. data/syntax/latex_memoir.syntax +64 -0
  123. data/syntax/lexflex.syntax +219 -0
  124. data/syntax/lighttpd.syntax +54 -0
  125. data/syntax/lilypond.syntax +492 -0
  126. data/syntax/lisp.syntax +61 -0
  127. data/syntax/literate_haskell.syntax +24 -0
  128. data/syntax/logo.syntax +29 -0
  129. data/syntax/logtalk.syntax +152 -0
  130. data/syntax/lua.syntax +86 -0
  131. data/syntax/m.syntax +142 -0
  132. data/syntax/macports_portfile.syntax +143 -0
  133. data/syntax/mail.syntax +118 -0
  134. data/syntax/makefile.syntax +35 -0
  135. data/syntax/man.syntax +17 -0
  136. data/syntax/markdown.syntax +543 -0
  137. data/syntax/mediawiki.syntax +567 -0
  138. data/syntax/mel.syntax +92 -0
  139. data/syntax/mips.syntax +66 -0
  140. data/syntax/mod_perl.syntax +50 -0
  141. data/syntax/modula-3.syntax +47 -0
  142. data/syntax/moinmoin.syntax +189 -0
  143. data/syntax/mootools.syntax +572 -0
  144. data/syntax/movable_type.syntax +162 -0
  145. data/syntax/multimarkdown.syntax +39 -0
  146. data/syntax/objective-c++.syntax +18 -0
  147. data/syntax/objective-c.syntax +226 -0
  148. data/syntax/ocaml.syntax +764 -0
  149. data/syntax/ocamllex.syntax +167 -0
  150. data/syntax/ocamlyacc.syntax +184 -0
  151. data/syntax/old/YAML.yaml +160 -0
  152. data/syntax/old/txt2tags.yaml +139 -0
  153. data/syntax/opengl.syntax +14 -0
  154. data/syntax/pascal.syntax +77 -0
  155. data/syntax/perl.syntax +1075 -0
  156. data/syntax/php.syntax +678 -0
  157. data/syntax/plain_text.syntax +32 -0
  158. data/syntax/postscript.syntax +114 -0
  159. data/syntax/processing.syntax +106 -0
  160. data/syntax/prolog.syntax +40 -0
  161. data/syntax/property_list.syntax +645 -0
  162. data/syntax/python.syntax +865 -0
  163. data/syntax/python_django.syntax +21 -0
  164. data/syntax/qmake_project.syntax +114 -0
  165. data/syntax/qt_c++.syntax +26 -0
  166. data/syntax/quake3_config.syntax +32 -0
  167. data/syntax/r.syntax +81 -0
  168. data/syntax/r_console.syntax +16 -0
  169. data/syntax/ragel.syntax +201 -0
  170. data/syntax/rd_r_documentation.syntax +91 -0
  171. data/syntax/regexp.syntax +50 -0
  172. data/syntax/regular_expressions_oniguruma.syntax +107 -0
  173. data/syntax/regular_expressions_python.syntax +109 -0
  174. data/syntax/release_notes.syntax +37 -0
  175. data/syntax/remind.syntax +253 -0
  176. data/syntax/restructuredtext.syntax +250 -0
  177. data/syntax/rez.syntax +80 -0
  178. data/syntax/ruby.syntax +1035 -0
  179. data/syntax/ruby_experimental.syntax +145 -0
  180. data/syntax/ruby_on_rails.syntax +88 -0
  181. data/syntax/s5.syntax +69 -0
  182. data/syntax/scheme.syntax +347 -0
  183. data/syntax/scilab.syntax +41 -0
  184. data/syntax/setext.syntax +147 -0
  185. data/syntax/shell-unix-generic.syntax +384 -0
  186. data/syntax/slate.syntax +149 -0
  187. data/syntax/smarty.syntax +63 -0
  188. data/syntax/sql.syntax +237 -0
  189. data/syntax/sql_rails.syntax +18 -0
  190. data/syntax/ssh-config.syntax +33 -0
  191. data/syntax/standard_ml.syntax +45 -0
  192. data/syntax/strings_file.syntax +39 -0
  193. data/syntax/subversion_commit_message.syntax +36 -0
  194. data/syntax/sweave.syntax +84 -0
  195. data/syntax/swig.syntax +57 -0
  196. data/syntax/tcl.syntax +152 -0
  197. data/syntax/template_toolkit.syntax +121 -0
  198. data/syntax/tex.syntax +86 -0
  199. data/syntax/tex_math.syntax +49 -0
  200. data/syntax/textile.syntax +215 -0
  201. data/syntax/tsv.syntax +50 -0
  202. data/syntax/twiki.syntax +241 -0
  203. data/syntax/txt2tags.syntax +79 -0
  204. data/syntax/vectorscript.syntax +57 -0
  205. data/syntax/xhtml_1.0.syntax +4027 -0
  206. data/syntax/xml.syntax +179 -0
  207. data/syntax/xml_strict.syntax +92 -0
  208. data/syntax/xsl.syntax +60 -0
  209. data/syntax/yaml.syntax +160 -0
  210. data/syntax/yui_javascript.syntax +176 -0
  211. data/test/test_uv.rb +0 -0
  212. metadata +270 -0
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: Graphviz (DOT)
3
+ fileTypes:
4
+ - dot
5
+ - DOT
6
+ scopeName: source.dot
7
+ uuid: 1A53D54E-6B1D-11D9-A006-000D93589AF6
8
+ foldingStartMarker: \{
9
+ patterns:
10
+ - name: storage.type.dot
11
+ match: \b(node|edge|graph|digraph|subgraph|strict)\b
12
+ - name: support.constant.attribute.node.dot
13
+ match: \b(bottomlabel|color|comment|distortion|fillcolor|fixedsize|fontcolor|fontname|fontsize|group|height|label|layer|orientation|peripheries|regular|shape|shapefile|sides|skew|style|toplabel|URL|width|z)\b
14
+ - name: support.constant.attribute.edge.dot
15
+ match: \b(arrowhead|arrowsize|arrowtail|color|comment|constraint|decorate|dir|fontcolor|fontname|fontsize|headlabel|headport|headURL|label|labelangle|labeldistance|labelfloat|labelcolor|labelfontname|labelfontsize|layer|lhead|ltail|minlen|samehead|sametail|style|taillabel|tailport|tailURL|weight)\b
16
+ - name: support.constant.attribute.graph.dot
17
+ match: \b(bgcolor|center|clusterrank|color|comment|compound|concentrate|fillcolor|fontname|fontpath|fontsize|label|labeljust|labelloc|layers|margin|mclimit|nodesep|nslimit|nslimit1|ordering|orientation|page|pagedir|quantum|rank|rankdir|ranksep|ratio|remincross|rotate|samplepoints|searchsize|size|style|URL)\b
18
+ - name: string.quoted.double.dot
19
+ endCaptures:
20
+ "0":
21
+ name: punctuation.definition.string.end.dot
22
+ begin: "\""
23
+ beginCaptures:
24
+ "0":
25
+ name: punctuation.definition.string.begin.dot
26
+ end: "\""
27
+ patterns:
28
+ - name: constant.character.escape.dot
29
+ match: \\.
30
+ - name: comment.line.double-slash.dot
31
+ captures:
32
+ "1":
33
+ name: punctuation.definition.comment.dot
34
+ match: (//).*$\n?
35
+ - name: comment.line.number-sign.dot
36
+ captures:
37
+ "1":
38
+ name: punctuation.definition.comment.dot
39
+ match: (#).*$\n?
40
+ - name: comment.block.dot
41
+ captures:
42
+ "0":
43
+ name: punctuation.definition.comment.dot
44
+ begin: /\*
45
+ end: \*/
46
+ foldingStopMarker: \}
47
+ keyEquivalent: ^~G
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: Doxygen
3
+ fileTypes:
4
+ - doxygen
5
+ scopeName: text.html.doxygen
6
+ repository:
7
+ source_doxygen:
8
+ patterns:
9
+ - include: "#keywords"
10
+ - include: text.html.basic
11
+ keywords:
12
+ patterns:
13
+ - name: keyword.control.doxygen
14
+ captures:
15
+ "1":
16
+ name: punctuation.definition.keyword.doxygen
17
+ match: ([\\@])((a|addindex|addtogroup|anchor|arg|attention|author|b|brief|bug|c|callgraph|callergraph|category|class|code|cond|copydoc|date|def|defgroup|deprecated|dir|dontinclude|dot|dotfile|e|else|elseif|em|endcode|endcond|enddot|endhtmlonly|endif|endlatexonly|endlink|endmanonly|endverbatim|endxmlonly|enum|example|exception|file|fn|hideinitializer|htmlinclude|htmlonly|if|ifnot|image|include|includelineno|ingroup|internal|invariant|interface|latexonly|li|line|link|mainpage|manonly|n|name|namespace|nosubgrouping|note|overload|p|package|page|par|paragraph|param|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|ref|relates|relatesalso|remarks|return|retval|sa|section|see|showinitializer|since|skip|skipline|struct|subpage|subsection|subsubsection|test|throw|todo|typedef|union|until|var|verbatim|verbinclude|version|warning|weakgroup|xmlonly|xrefitem)\b|(\$|\@|\\|\&|\~|\<|\>|\#|\%|f\$|f\[|f\]))
18
+ uuid: 9725E602-6D7C-4E98-911A-C66802142451
19
+ patterns:
20
+ - name: comment.block.doxygen
21
+ captures:
22
+ "0":
23
+ name: punctuation.definition.comment.doxygen
24
+ begin: \/\*\*\<?
25
+ end: \*\/
26
+ patterns:
27
+ - include: "#source_doxygen"
28
+ - name: comment.block.doxygen
29
+ captures:
30
+ "0":
31
+ name: punctuation.definition.comment.doxygen
32
+ begin: \/\*!\<?
33
+ end: \*\/
34
+ patterns:
35
+ - include: "#source_doxygen"
36
+ - name: comment.line.doxygen
37
+ begin: \/\/[\/!]\<?
38
+ beginCaptures:
39
+ "0":
40
+ name: punctuation.definition.comment.doxygen
41
+ end: $\n?
42
+ patterns:
43
+ - include: "#source_doxygen"
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: Dylan
3
+ fileTypes:
4
+ - dylan
5
+ scopeName: source.dylan
6
+ uuid: 475B8369-3520-4B4C-BBA1-1D1229C6F397
7
+ foldingStartMarker: \b(define|begin|block)\b
8
+ patterns:
9
+ - name: comment.block.dylan
10
+ captures:
11
+ "0":
12
+ name: punctuation.definition.comment.dylan
13
+ begin: /\*
14
+ end: \*/
15
+ comment: TODO -- Dylan allows nested comments.
16
+ - name: comment.line.double-slash.dylan
17
+ begin: //
18
+ beginCaptures:
19
+ "0":
20
+ name: punctuation.definition.comment.dylan
21
+ end: $\n?
22
+ patterns:
23
+ - name: punctuation.separator.continuation.dylan
24
+ match: (?>\\\s*\n)
25
+ - name: meta.function.dylan
26
+ captures:
27
+ "1":
28
+ name: keyword.control.def.dylan
29
+ "2":
30
+ name: storage.modifier.dylan
31
+ "3":
32
+ name: storage.type.function.dylan
33
+ "4":
34
+ name: entity.name.function.dylan
35
+ begin: \b(define\s+)((?:sealed|inline)\s)?(method|function)\s+([A-Za-z0-9\\-]*[!?]?)\s
36
+ end: \)
37
+ - name: keyword.control.dylan
38
+ match: \b(?<!-)(begin|block|case|class|constant|define|domain|else|end|for|function|handler|if|inline|let|library|local|macro|method|module|otherwise|select|unless|until|variable|when|while)(?![:-])\b
39
+ - name: support.constant.language.dylan
40
+ match: (#t|#f|#next|#rest|#key|#all-keys|#include)
41
+ - name: keyword.control.sealing-directives.dylan
42
+ match: \b(sealed|open|abstract|concrete|primary|free)\b
43
+ - name: constant.numeric.dylan
44
+ match: \b((#x[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b
45
+ - name: string.quoted.double.dylan
46
+ endCaptures:
47
+ "0":
48
+ name: punctuation.definition.string.end.dylan
49
+ begin: "\""
50
+ beginCaptures:
51
+ "0":
52
+ name: punctuation.definition.string.begin.dylan
53
+ end: "\""
54
+ patterns:
55
+ - name: constant.character.escape.dylan
56
+ match: \\.
57
+ - name: support.class.dylan
58
+ match: <(abort|array|boolean|byte-string|character|class|collection|complex|condition|deque|double-float|empty-list|error|explicit-key-collection|extended-float|float|function|generic-function|integer|list|method|mutable-collection|mutable-explicit-key-collection|mutable-sequence|number|object-table|object|pair|range|rational|real|restart|sealed-object-error|sequence|serious-condition|simple-error|simple-object-vector|simple-restart|simple-vector|simple-warning|single-float|singleton|stretchy-collection|stretchy-vector|string|symbol|table|type-error|type|unicode-string|vector|warning)>
59
+ - name: support.function.dylan
60
+ match: \b(?<!-)(abort|abs|add|add!|add-method|add-new|add-new!|all-superclasses|always|any?|applicable-method?|apply|aref|aref-setter|as|as-lowercase|as-lowercase!|as-uppercase|as-uppercase!|ash|backward-iteration-protocol|break|ceiling|ceiling/|cerror|check-type|choose|choose-by|complement|compose|concatenate|concatenate-as|condition-format-arguments|condition-format-string|conjoin|copy-sequence|curry|default-handler|dimension|dimensions|direct-subclasses|direct-superclasses|disjoin|do|do-handlers|element|element-setter|empty?|error|even?|every?|fill!|find-key|find-method|first|first-setter|floor|floor/|forward-iteration-protocol|function-arguments|function-return-values|function-specializers|gcd|generic-function-mandatory-|keywords|generic-function-methods|head|head-setter|identity|initialize|instance?|integral?|intersection|key-sequence|key-test|last|last-setter|lcm|limited|list|logand|logbit?|logior|lognot|logxor|make|map|map-as|map-into|max|member?|merge-hash-codes|min|modulo|negative|negative?|object-class|object-hash|odd?|pair|pop|pop-last|positive?|push|push-last|range|rank|rcurry|reduce|reduce1|remainder|remove|remove!|remove-duplicates|remove-duplicates!|remove-key!|remove-method|replace-elements!|replace-subsequence!|restart-query|return-allowed?|return-description|return-query|reverse|reverse!|round|round/|row-major-index|second|second-setter|shallow-copy|signal|singleton|size|size-setter|slot-initialized?|sort|sort!|sorted-applicable-methods|subsequence-position|subtype?|table-protocol|tail|tail-setter|third|third-setter|truncate|truncate/|type-error-expected-type|type-error-value|type-for-copy|type-union|union|values|vector|zero?)(?![:-])\b
61
+ foldingStopMarker: \bend\b
62
+ keyEquivalent: ^~D
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: Eiffel
3
+ fileTypes:
4
+ - e
5
+ scopeName: source.eiffel
6
+ repository:
7
+ number:
8
+ match: "[0-9]+"
9
+ variable:
10
+ match: "[a-zA-Z0-9_]+"
11
+ uuid: 34672373-DED9-45B8-AF7E-2E4B6C3D6B76
12
+ foldingStartMarker: (class|once|do|external)
13
+ patterns:
14
+ - name: comment.line.double-dash.eiffel
15
+ captures:
16
+ "1":
17
+ name: punctuation.definition.comment.eiffel
18
+ match: (--).*$\n?
19
+ - name: keyword.control.eiffel
20
+ match: \b(Indexing|indexing|deferred|expanded|class|inherit|rename|as|export|undefine|redefine|select|all|create|creation|feature|prefix|infix|separate|frozen|obsolete|local|is|unique|do|once|external|alias|require|ensure|invariant|variant|rescue|retry|like|check|if|else|elseif|then|inspect|when|from|loop|until|debug|not|or|and|xor|implies|old|end)\b
21
+ - name: variable.other.eiffel
22
+ match: "[a-zA-Z_]+"
23
+ - name: constant.language.eiffel
24
+ match: \b(True|true|False|false|Void|void|Result|result)\b
25
+ - name: meta.features.eiffel
26
+ begin: feature
27
+ end: end
28
+ - name: meta.effective_routine_body.eiffel
29
+ begin: (do|once)
30
+ end: (ensure|end)
31
+ - name: meta.rescue.eiffel
32
+ begin: rescue
33
+ end: end
34
+ - name: string.quoted.double.eiffel
35
+ endCaptures:
36
+ "0":
37
+ name: punctuation.definition.string.end.eiffel
38
+ begin: "\""
39
+ beginCaptures:
40
+ "0":
41
+ name: punctuation.definition.string.begin.eiffel
42
+ end: "\""
43
+ patterns:
44
+ - name: constant.character.escape.eiffel
45
+ match: \\.
46
+ - name: constant.numeric.eiffel
47
+ match: "[0-9]+"
48
+ - name: storage.modifier.eiffel
49
+ match: \b(deferred|expanded)\b
50
+ - name: meta.definition.class.eiffel
51
+ captures:
52
+ "1":
53
+ name: storage.modifier.eiffel
54
+ begin: |-
55
+ ^\s*
56
+ ((?:\b(deferred|expanded)\b\s*)*) # modifier
57
+ (class)\s+
58
+ (\w+)\s* # identifier
59
+ end: (?=end)
60
+ patterns:
61
+ - name: meta.definition.class.extends.java
62
+ captures:
63
+ "1":
64
+ name: storage.modifier.java
65
+ begin: \b(extends)\b\s+
66
+ end: (?={|implements)
67
+ patterns:
68
+ - include: "#all-types"
69
+ - name: meta.definition.class.implements.java
70
+ captures:
71
+ "1":
72
+ name: storage.modifier.java
73
+ begin: \b(implements)\b\s+
74
+ end: (?={|extends)
75
+ patterns:
76
+ - include: "#all-types"
77
+ foldingStopMarker: (ensure|end)
78
+ keyEquivalent: ^~E
@@ -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