bjeanes-ultraviolet 0.10.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (234) hide show
  1. data/History.txt +29 -0
  2. data/Manifest.txt +233 -0
  3. data/README.txt +52 -0
  4. data/Rakefile +51 -0
  5. data/bin/theme2latexrender +122 -0
  6. data/bin/theme2xhtmlrender +156 -0
  7. data/bin/uv +140 -0
  8. data/lib/uv.rb +100 -0
  9. data/lib/uv/render_processor.rb +131 -0
  10. data/lib/uv/utility.rb +67 -0
  11. data/render/latex/active4d.render +132 -0
  12. data/render/latex/all_hallows_eve.render +96 -0
  13. data/render/latex/amy.render +171 -0
  14. data/render/latex/blackboard.render +111 -0
  15. data/render/latex/brilliance_black.render +552 -0
  16. data/render/latex/brilliance_dull.render +561 -0
  17. data/render/latex/cobalt.render +162 -0
  18. data/render/latex/dawn.render +126 -0
  19. data/render/latex/eiffel.render +132 -0
  20. data/render/latex/espresso_libre.render +123 -0
  21. data/render/latex/idle.render +93 -0
  22. data/render/latex/iplastic.render +99 -0
  23. data/render/latex/lazy.render +96 -0
  24. data/render/latex/mac_classic.render +135 -0
  25. data/render/latex/magicwb_amiga.render +117 -0
  26. data/render/latex/pastels_on_dark.render +204 -0
  27. data/render/latex/slush_poppies.render +123 -0
  28. data/render/latex/spacecadet.render +81 -0
  29. data/render/latex/sunburst.render +186 -0
  30. data/render/latex/twilight.render +153 -0
  31. data/render/latex/zenburnesque.render +126 -0
  32. data/render/old/txt2tags.render +131 -0
  33. data/render/xhtml/active4d.render +140 -0
  34. data/render/xhtml/all_hallows_eve.render +104 -0
  35. data/render/xhtml/amy.render +179 -0
  36. data/render/xhtml/blackboard.render +119 -0
  37. data/render/xhtml/brilliance_black.render +560 -0
  38. data/render/xhtml/brilliance_dull.render +569 -0
  39. data/render/xhtml/cobalt.render +170 -0
  40. data/render/xhtml/dawn.render +134 -0
  41. data/render/xhtml/eiffel.render +140 -0
  42. data/render/xhtml/espresso_libre.render +131 -0
  43. data/render/xhtml/files/css/active4d.css +114 -0
  44. data/render/xhtml/files/css/all_hallows_eve.css +72 -0
  45. data/render/xhtml/files/css/amy.css +147 -0
  46. data/render/xhtml/files/css/blackboard.css +88 -0
  47. data/render/xhtml/files/css/brilliance_black.css +605 -0
  48. data/render/xhtml/files/css/brilliance_dull.css +599 -0
  49. data/render/xhtml/files/css/cobalt.css +149 -0
  50. data/render/xhtml/files/css/dawn.css +121 -0
  51. data/render/xhtml/files/css/eiffel.css +121 -0
  52. data/render/xhtml/files/css/espresso_libre.css +109 -0
  53. data/render/xhtml/files/css/idle.css +62 -0
  54. data/render/xhtml/files/css/iplastic.css +80 -0
  55. data/render/xhtml/files/css/lazy.css +73 -0
  56. data/render/xhtml/files/css/mac_classic.css +123 -0
  57. data/render/xhtml/files/css/magicwb_amiga.css +104 -0
  58. data/render/xhtml/files/css/pastels_on_dark.css +188 -0
  59. data/render/xhtml/files/css/slush_poppies.css +85 -0
  60. data/render/xhtml/files/css/spacecadet.css +51 -0
  61. data/render/xhtml/files/css/sunburst.css +180 -0
  62. data/render/xhtml/files/css/twilight.css +137 -0
  63. data/render/xhtml/files/css/zenburnesque.css +91 -0
  64. data/render/xhtml/idle.render +101 -0
  65. data/render/xhtml/iplastic.render +107 -0
  66. data/render/xhtml/lazy.render +104 -0
  67. data/render/xhtml/mac_classic.render +143 -0
  68. data/render/xhtml/magicwb_amiga.render +125 -0
  69. data/render/xhtml/pastels_on_dark.render +212 -0
  70. data/render/xhtml/slush_poppies.render +131 -0
  71. data/render/xhtml/spacecadet.render +89 -0
  72. data/render/xhtml/sunburst.render +194 -0
  73. data/render/xhtml/twilight.render +161 -0
  74. data/render/xhtml/zenburnesque.render +134 -0
  75. data/syntax/actionscript.syntax +97 -0
  76. data/syntax/active4d.syntax +276 -0
  77. data/syntax/active4d_html.syntax +311 -0
  78. data/syntax/active4d_ini.syntax +50 -0
  79. data/syntax/active4d_library.syntax +21 -0
  80. data/syntax/ada.syntax +33 -0
  81. data/syntax/antlr.syntax +151 -0
  82. data/syntax/apache.syntax +191 -0
  83. data/syntax/applescript.syntax +384 -0
  84. data/syntax/asp.syntax +70 -0
  85. data/syntax/asp_vb.net.syntax +129 -0
  86. data/syntax/bibtex.syntax +151 -0
  87. data/syntax/blog_html.syntax +41 -0
  88. data/syntax/blog_markdown.syntax +42 -0
  89. data/syntax/blog_text.syntax +27 -0
  90. data/syntax/blog_textile.syntax +27 -0
  91. data/syntax/build.syntax +53 -0
  92. data/syntax/bulletin_board.syntax +287 -0
  93. data/syntax/c++.syntax +109 -0
  94. data/syntax/c.syntax +326 -0
  95. data/syntax/cake.syntax +55 -0
  96. data/syntax/camlp4.syntax +36 -0
  97. data/syntax/cm.syntax +32 -0
  98. data/syntax/coldfusion.syntax +119 -0
  99. data/syntax/context_free.syntax +176 -0
  100. data/syntax/cs.syntax +59 -0
  101. data/syntax/css.syntax +195 -0
  102. data/syntax/css_experimental.syntax +1925 -0
  103. data/syntax/csv.syntax +68 -0
  104. data/syntax/d.syntax +142 -0
  105. data/syntax/diff.syntax +81 -0
  106. data/syntax/dokuwiki.syntax +204 -0
  107. data/syntax/dot.syntax +47 -0
  108. data/syntax/doxygen.syntax +43 -0
  109. data/syntax/dylan.syntax +62 -0
  110. data/syntax/eiffel.syntax +78 -0
  111. data/syntax/erlang.syntax +922 -0
  112. data/syntax/f-script.syntax +80 -0
  113. data/syntax/fortran.syntax +141 -0
  114. data/syntax/fxscript.syntax +142 -0
  115. data/syntax/greasemonkey.syntax +34 -0
  116. data/syntax/gri.syntax +83 -0
  117. data/syntax/groovy.syntax +191 -0
  118. data/syntax/gtd.syntax +22 -0
  119. data/syntax/gtdalt.syntax +143 -0
  120. data/syntax/haml.syntax +88 -0
  121. data/syntax/haskell.syntax +88 -0
  122. data/syntax/html-asp.syntax +27 -0
  123. data/syntax/html.syntax +362 -0
  124. data/syntax/html_django.syntax +36 -0
  125. data/syntax/html_for_asp.net.syntax +424 -0
  126. data/syntax/html_mason.syntax +119 -0
  127. data/syntax/html_rails.syntax +40 -0
  128. data/syntax/html_tcl.syntax +26 -0
  129. data/syntax/icalendar.syntax +32 -0
  130. data/syntax/inform.syntax +48 -0
  131. data/syntax/ini.syntax +55 -0
  132. data/syntax/installer_distribution_script.syntax +77 -0
  133. data/syntax/io.syntax +81 -0
  134. data/syntax/java.syntax +211 -0
  135. data/syntax/javaproperties.syntax +20 -0
  136. data/syntax/javascript.syntax +256 -0
  137. data/syntax/javascript_+_prototype.syntax +72 -0
  138. data/syntax/javascript_+_prototype_bracketed.syntax +140 -0
  139. data/syntax/jquery_javascript.syntax +114 -0
  140. data/syntax/json.syntax +136 -0
  141. data/syntax/languagedefinition.syntax +708 -0
  142. data/syntax/latex.syntax +566 -0
  143. data/syntax/latex_beamer.syntax +41 -0
  144. data/syntax/latex_log.syntax +50 -0
  145. data/syntax/latex_memoir.syntax +64 -0
  146. data/syntax/lexflex.syntax +219 -0
  147. data/syntax/lighttpd.syntax +54 -0
  148. data/syntax/lilypond.syntax +492 -0
  149. data/syntax/lisp.syntax +61 -0
  150. data/syntax/literate_haskell.syntax +24 -0
  151. data/syntax/logo.syntax +29 -0
  152. data/syntax/logtalk.syntax +152 -0
  153. data/syntax/lua.syntax +86 -0
  154. data/syntax/m.syntax +142 -0
  155. data/syntax/macports_portfile.syntax +163 -0
  156. data/syntax/mail.syntax +118 -0
  157. data/syntax/makefile.syntax +36 -0
  158. data/syntax/man.syntax +17 -0
  159. data/syntax/markdown.syntax +543 -0
  160. data/syntax/mediawiki.syntax +567 -0
  161. data/syntax/mel.syntax +92 -0
  162. data/syntax/mips.syntax +66 -0
  163. data/syntax/mod_perl.syntax +50 -0
  164. data/syntax/modula-3.syntax +47 -0
  165. data/syntax/moinmoin.syntax +189 -0
  166. data/syntax/mootools.syntax +572 -0
  167. data/syntax/movable_type.syntax +162 -0
  168. data/syntax/multimarkdown.syntax +39 -0
  169. data/syntax/objective-c++.syntax +18 -0
  170. data/syntax/objective-c.syntax +233 -0
  171. data/syntax/ocaml.syntax +764 -0
  172. data/syntax/ocamllex.syntax +167 -0
  173. data/syntax/ocamlyacc.syntax +184 -0
  174. data/syntax/opengl.syntax +14 -0
  175. data/syntax/pascal.syntax +77 -0
  176. data/syntax/perl.syntax +1115 -0
  177. data/syntax/php.syntax +1253 -0
  178. data/syntax/plain_text.syntax +32 -0
  179. data/syntax/pmwiki.syntax +113 -0
  180. data/syntax/postscript.syntax +114 -0
  181. data/syntax/processing.syntax +106 -0
  182. data/syntax/prolog.syntax +40 -0
  183. data/syntax/property_list.syntax +635 -0
  184. data/syntax/python.syntax +868 -0
  185. data/syntax/python_django.syntax +21 -0
  186. data/syntax/qmake_project.syntax +114 -0
  187. data/syntax/qt_c++.syntax +26 -0
  188. data/syntax/quake3_config.syntax +32 -0
  189. data/syntax/r.syntax +81 -0
  190. data/syntax/r_console.syntax +16 -0
  191. data/syntax/ragel.syntax +201 -0
  192. data/syntax/rd_r_documentation.syntax +91 -0
  193. data/syntax/regexp.syntax +50 -0
  194. data/syntax/regular_expressions_oniguruma.syntax +107 -0
  195. data/syntax/regular_expressions_python.syntax +109 -0
  196. data/syntax/release_notes.syntax +46 -0
  197. data/syntax/remind.syntax +253 -0
  198. data/syntax/restructuredtext.syntax +250 -0
  199. data/syntax/rez.syntax +80 -0
  200. data/syntax/ruby.syntax +1035 -0
  201. data/syntax/ruby_experimental.syntax +145 -0
  202. data/syntax/ruby_on_rails.syntax +88 -0
  203. data/syntax/s5.syntax +69 -0
  204. data/syntax/scheme.syntax +347 -0
  205. data/syntax/scilab.syntax +41 -0
  206. data/syntax/setext.syntax +147 -0
  207. data/syntax/shell-unix-generic.syntax +384 -0
  208. data/syntax/slate.syntax +149 -0
  209. data/syntax/smarty.syntax +63 -0
  210. data/syntax/sql.syntax +237 -0
  211. data/syntax/sql_rails.syntax +18 -0
  212. data/syntax/ssh-config.syntax +33 -0
  213. data/syntax/standard_ml.syntax +121 -0
  214. data/syntax/strings_file.syntax +39 -0
  215. data/syntax/subversion_commit_message.syntax +36 -0
  216. data/syntax/sweave.syntax +84 -0
  217. data/syntax/swig.syntax +57 -0
  218. data/syntax/tcl.syntax +152 -0
  219. data/syntax/template_toolkit.syntax +121 -0
  220. data/syntax/tex.syntax +86 -0
  221. data/syntax/tex_math.syntax +49 -0
  222. data/syntax/textile.syntax +215 -0
  223. data/syntax/tsv.syntax +50 -0
  224. data/syntax/twiki.syntax +241 -0
  225. data/syntax/txt2tags.syntax +79 -0
  226. data/syntax/vectorscript.syntax +57 -0
  227. data/syntax/xhtml_1.0.syntax +4027 -0
  228. data/syntax/xml.syntax +180 -0
  229. data/syntax/xml_strict.syntax +92 -0
  230. data/syntax/xsl.syntax +60 -0
  231. data/syntax/yaml.syntax +160 -0
  232. data/syntax/yui_javascript.syntax +176 -0
  233. data/test/test_uv.rb +0 -0
  234. metadata +309 -0
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: LaTeX Beamer
3
+ fileTypes: []
4
+
5
+ firstLineMatch: ^\\documentclass(\[.*\])?\{beamer\}
6
+ scopeName: text.tex.latex.beamer
7
+ uuid: 2ACA20AA-B008-469B-A04A-6DE232973ED8
8
+ foldingStartMarker: \\begin\{.*\}|%.*\(fold\)\s*$
9
+ patterns:
10
+ - name: meta.function.environment.frame.latex
11
+ captures:
12
+ "1":
13
+ name: support.function.be.latex
14
+ "2":
15
+ name: punctuation.definition.function.latex
16
+ "3":
17
+ name: punctuation.definition.arguments.begin.latex
18
+ "4":
19
+ name: variable.parameter.function.latex
20
+ "5":
21
+ name: punctuation.definition.arguments.end.latex
22
+ begin: (?:\s*)((\\)begin)(\{)(frame)(\})
23
+ end: ((\\)end)(\{)(frame)(\})
24
+ patterns:
25
+ - name: support.function.with-arg.latex
26
+ captures:
27
+ "1":
28
+ name: support.function.with-arg.latex
29
+ "2":
30
+ name: punctuation.definition.function.latex
31
+ "3":
32
+ name: punctuation.definition.arguments.begin.latex
33
+ "4":
34
+ name: entity.name.function.frame.latex
35
+ "5":
36
+ name: punctuation.definition.arguments.end.latex
37
+ match: ((\\)frametitle)(\{)(.*)(\})
38
+ - include: $self
39
+ - include: text.tex.latex
40
+ foldingStopMarker: \\end\{.*\}|%.*\(end\)\s*$
41
+ keyEquivalent: ^~B
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: LaTeX Log
3
+ firstLineMatch: "This is (pdfe)?TeXk?, Version "
4
+ scopeName: text.log.latex
5
+ uuid: F68ACE95-7DB3-4DFB-AA8A-89988B116B5C
6
+ foldingStartMarker: /\*\*|\(\s*$
7
+ patterns:
8
+ - name: invalid.deprecated
9
+ match: ".*Warning:"
10
+ - name: invalid.deprecated
11
+ match: "[^:]*:\\d*:.*"
12
+ - name: invalid.illegal
13
+ match: .*Error|^!.*
14
+ - name: entity.name.function
15
+ match: .*\.sty
16
+ - name: entity.name.type.class
17
+ match: .*\.cls
18
+ - name: entity.name.tag.configuration
19
+ match: .*\.cfg
20
+ - name: entity.name.tag.definition
21
+ match: .*\.def
22
+ - name: comment.block.documentation
23
+ match: .*Info.*
24
+ - name: meta.log.latex.fixme
25
+ match: ".*FiXme:"
26
+ - name: meta.log.latex.hyphenation
27
+ captures:
28
+ "1":
29
+ name: keyword.control.hyphenation.latex
30
+ begin: (Overfull|Underfull)
31
+ end: (\[\]\n)
32
+ patterns:
33
+ - name: variable.parameter.hyphenation.latex2
34
+ match: "[0-9]+\\-\\-[0-9]+"
35
+ - name: string.unquoted.other.filename.log.latex
36
+ endCaptures:
37
+ "0":
38
+ name: punctuation.definition.string.end.log.latex
39
+ begin: (<)
40
+ beginCaptures:
41
+ "0":
42
+ name: punctuation.definition.string.begin.log.latex
43
+ end: (>)
44
+ patterns:
45
+ - name: support.function.with-arg.latex
46
+ captures:
47
+ "1":
48
+ name: entity.name.function.filename.latex
49
+ match: (.*/.*\.pdf)
50
+ foldingStopMarker: \*\*/|^\s*\)
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: LaTeX Memoir
3
+ fileTypes: []
4
+
5
+ firstLineMatch: ^\\documentclass(\[.*\])?\{memoir\}
6
+ scopeName: text.tex.latex.memoir
7
+ uuid: D0853B20-ABFF-48AB-8AB9-3D8BA0755C05
8
+ foldingStartMarker: \\begin\{.*\}|%.*\(fold\)\s*$
9
+ patterns:
10
+ - name: meta.function.memoir-fbox.latex
11
+ captures:
12
+ "1":
13
+ name: support.function.be.latex
14
+ "2":
15
+ name: punctuation.definition.function.latex
16
+ "3":
17
+ name: punctuation.definition.arguments.begin.latex
18
+ "4":
19
+ name: variable.parameter.function.latex
20
+ "5":
21
+ name: punctuation.definition.arguments.end.latex
22
+ begin: (?:\s*)((\\)begin)(\{)(framed|shaded|leftbar)(\})
23
+ end: ((\\)end)(\{)(\4)(\})
24
+ patterns:
25
+ - include: $self
26
+ - name: meta.function.memoir-verbatim.latex
27
+ captures:
28
+ "1":
29
+ name: support.function.be.latex
30
+ "2":
31
+ name: punctuation.definition.function.latex
32
+ "3":
33
+ name: punctuation.definition.arguments.begin.latex
34
+ "4":
35
+ name: variable.parameter.function.latex
36
+ "5":
37
+ name: punctuation.definition.arguments.end.latex
38
+ begin: (?:\s*)((\\)begin)(\{)((?:fboxv|boxedv|V)erbatim)(\})
39
+ contentName: markup.raw.verbatim.latex
40
+ end: ((\\)end)(\{)(\4)(\})
41
+ - name: meta.function.memoir-alltt.latex
42
+ captures:
43
+ "1":
44
+ name: support.function.be.latex
45
+ "2":
46
+ name: punctuation.definition.function.latex
47
+ "3":
48
+ name: punctuation.definition.arguments.begin.latex
49
+ "4":
50
+ name: variable.parameter.function.latex
51
+ "5":
52
+ name: punctuation.definition.arguments.end.latex
53
+ begin: (?:\s*)((\\)begin)(\{)(alltt)(\})
54
+ contentName: markup.raw.verbatim.latex
55
+ end: ((\\)end)(\{)(alltt)(\})
56
+ patterns:
57
+ - name: support.function.general.tex
58
+ captures:
59
+ "1":
60
+ name: punctuation.definition.function.tex
61
+ match: (\\)[A-Za-z]+
62
+ - include: text.tex.latex
63
+ foldingStopMarker: \\end\{.*\}|%.*\(end\)\s*$
64
+ keyEquivalent: ^~M
@@ -0,0 +1,219 @@
1
+ ---
2
+ name: Lex/Flex
3
+ fileTypes:
4
+ - l
5
+ scopeName: source.lex
6
+ repository:
7
+ csource:
8
+ patterns:
9
+ - name: support.function.c.lex
10
+ match: \b(?:ECHO|BEGIN|REJECT|YY_FLUSH_BUFFER|YY_BREAK|yy(?:more|less|unput|input|terminate|text|leng|restart|_(?:push|pop|top)_state|_(?:create|switch_to|flush|delete)_buffer|_scan_(?:string|bytes|buffer)|_set_(?:bol|interactive))(?=\(|$))\b
11
+ - include: source.c
12
+ subregexp:
13
+ patterns:
14
+ - include: "#re_escape"
15
+ - name: constant.other.character-class.set.lex
16
+ endCaptures:
17
+ "1":
18
+ name: punctuation.terminator.character-class.set.lex
19
+ begin: (\[)(\^)?-?
20
+ beginCaptures:
21
+ "1":
22
+ name: punctuation.definition.character-class.set.lex
23
+ "2":
24
+ name: keyword.operator.negation.regexp.lex
25
+ end: -?(\])
26
+ patterns:
27
+ - include: "#re_escape"
28
+ - name: constant.other.character-class.set.lex
29
+ captures:
30
+ "1":
31
+ name: invalid.illegal.regexp.lex
32
+ match: \[:(?:(?:alnum|alpha|blank|cntrl|x?digit|graph|lower|print|punct|space|upper)|(.*?)):\]
33
+ - name: variable.other.lex
34
+ match: (?i){[a-z_][a-z0-9_-]*}
35
+ - name: keyword.operator.quantifier.regexp.lex
36
+ begin: \{
37
+ end: \}
38
+ patterns:
39
+ - match: (?<=\{)[0-9]*(?:,[0-9]*)?(?=\})
40
+ - name: invalid.illegal.regexp.lex
41
+ match: "[^}]"
42
+ comment: "{3} counts should only have digit[,digit]"
43
+ - name: string.quoted.double.regexp.lex
44
+ begin: "\""
45
+ end: "\""
46
+ patterns:
47
+ - include: "#re_escape"
48
+ - begin: ([*+?])(?=[*+?])
49
+ beginCaptures:
50
+ "1":
51
+ name: keyword.operator.quantifier.regexp.lex
52
+ end: (?=[^*+?])
53
+ patterns:
54
+ - name: invalid.illegal.regexp.lex
55
+ match: .
56
+ comment: make ** or +? or other combinations illegal
57
+ - name: keyword.operator.quantifier.regexp.lex
58
+ match: "[*+?]"
59
+ - name: invalid.illegal.regexp.lex
60
+ match: <<EOF>>
61
+ comment: <<EOF>> is handled in the rule pattern
62
+ - name: meta.group.regexp.lex
63
+ endCaptures:
64
+ "1":
65
+ name: punctuation.terminator.group.regexp.lex
66
+ begin: (\()
67
+ beginCaptures:
68
+ "1":
69
+ name: punctuation.definition.group.regexp.lex
70
+ end: (\))|(?=\s)|$(?#end on whitespace because regex does)
71
+ patterns:
72
+ - name: invalid.illegal.regexp.lex
73
+ match: /
74
+ - include: "#subregexp"
75
+ - begin: (/)
76
+ beginCaptures:
77
+ "1":
78
+ name: keyword.operator.trailing-match.regexp.lex
79
+ end: (?=\s)|$
80
+ patterns:
81
+ - name: invalid.illegal.regexp.lex
82
+ match: /|\$(?!\S)
83
+ - include: "#subregexp"
84
+ comment: detection of multiple trailing contexts
85
+ regexp:
86
+ name: string.regexp.lex
87
+ captures:
88
+ "1":
89
+ name: keyword.control.anchor.regexp.lex
90
+ begin: \G(?=\S)(\^)?
91
+ end: (\$)?(?:(?=\s)|$)
92
+ patterns:
93
+ - include: "#subregexp"
94
+ re_escape:
95
+ name: constant.character.escape.lex
96
+ match: \\(?i:[0-9]{1,3}|x[0-9a-f]{1,2}|.)
97
+ includes:
98
+ patterns:
99
+ - name: meta.embedded.source.c.lex
100
+ begin: ^%\{$
101
+ end: ^%\}$
102
+ patterns:
103
+ - include: source.c
104
+ comment: "TODO: $} should override the embedded scopes"
105
+ - name: meta.embedded.source.c.lex
106
+ begin: ^[ \t]+
107
+ end: $
108
+ patterns:
109
+ - include: source.c
110
+ comment: "TODO: eol should override the embedded scopes"
111
+ rec_csource:
112
+ begin: \{
113
+ end: \}
114
+ patterns:
115
+ - include: source.c
116
+ - include: "#csource"
117
+ uuid: 92E842A0-9DE6-4D31-A6AC-1CDE0F9547C5
118
+ foldingStartMarker: /\*\*|\{\s*$
119
+ patterns:
120
+ - name: meta.section.definitions.lex
121
+ begin: \A(?!%%$)
122
+ end: ^(?=%%$)
123
+ patterns:
124
+ - include: "#includes"
125
+ - name: comment.block.c.lex
126
+ begin: /\*
127
+ end: \*/|$
128
+ - name: meta.definition.lex
129
+ begin: ^(?i)([a-z_][a-z0-9_-]*)(?=\s|$)
130
+ beginCaptures:
131
+ "1":
132
+ name: entity.name.function.lex
133
+ end: $
134
+ patterns:
135
+ - include: "#regexp"
136
+ - name: meta.start-condition.lex
137
+ begin: ^(%[sx])(?=\s|$)
138
+ beginCaptures:
139
+ "1":
140
+ name: punctuation.definition.start-condition.lex
141
+ end: $
142
+ patterns:
143
+ - match: (?i)[a-z_][a-z0-9_-]*
144
+ - name: invalid.illegal.lex
145
+ match: \S
146
+ - name: meta.options.lex
147
+ begin: ^(%option)\s(?=\S)
148
+ beginCaptures:
149
+ "1":
150
+ name: keyword.other.option.lex
151
+ end: $
152
+ patterns:
153
+ - name: support.other.option.lex
154
+ match: \b(?:(?:no)?(?:[78]bit|align|backup|batch|c\+\+|debug|default|ecs|fast|full|interactive|lex-compat|meta-ecs|perf-report|read|stdout|verbose|warn|array|pointer|input|unput|yy_(?:(?:push|pop|top)_state|scan_(?:buffer|bytes|string))|main|stack|stdinit|yylineno|yywrap)|(?:case(?:ful|less)|case-(?:in)?sensitive|(?:always|never)-interactive))\b
155
+ - name: keyword.other.option.lex
156
+ begin: ^%(?:array|pointer)
157
+ end: $
158
+ patterns:
159
+ - name: invalid.illegal.lex
160
+ match: \S
161
+ comment: first section of the file - definitions
162
+ - begin: ^(%%)$
163
+ beginCaptures:
164
+ "1":
165
+ name: punctuation.separator.sections.lex
166
+ end: \Z.\A(?# never end)
167
+ patterns:
168
+ - name: meta.section.rules.lex
169
+ begin: ^(?!%%$)
170
+ end: ^(?=%%$)
171
+ patterns:
172
+ - name: meta.rule.lex
173
+ begin: ^(?!$)
174
+ end: $
175
+ patterns:
176
+ - include: "#includes"
177
+ - begin: (?i)^(<(?:(?:[a-z_][a-z0-9_-]*,)*[a-z_][a-z0-9_-]|\*)>)?(?:(<<EOF>>)(\s*))?(?=\S)
178
+ beginCaptures:
179
+ "1":
180
+ name: keyword.other.start-condition.lex
181
+ "2":
182
+ name: keyword.operator.eof.lex
183
+ "3":
184
+ name: invalid.illegal.regexp.lex
185
+ end: (?=\s)|$
186
+ patterns:
187
+ - include: "#regexp"
188
+ comment: rule pattern
189
+ - endCaptures:
190
+ "1":
191
+ name: punctuation.terminator.code.lex
192
+ "2":
193
+ name: invalid.illegal.ignored.lex
194
+ begin: (%\{)
195
+ beginCaptures:
196
+ "1":
197
+ name: punctuation.definition.code.lex
198
+ end: (%\})(.*)
199
+ patterns:
200
+ - include: "#csource"
201
+ comment: "TODO: %} should override embedded scopes"
202
+ - name: meta.rule.action.lex
203
+ begin: (?=\S)
204
+ end: $
205
+ patterns:
206
+ - include: "#csource"
207
+ comment: "TODO: eol should override embedded scopes"
208
+ comment: second section of the file - rules
209
+ - begin: ^(%%)$
210
+ contentName: meta.section.user-code.lex
211
+ beginCaptures:
212
+ "1":
213
+ name: punctuation.separator.sections.lex
214
+ end: \Z.\A(?# never end)
215
+ patterns:
216
+ - include: "#csource"
217
+ comment: third section of the file - user code
218
+ foldingStopMarker: \*\*/|^\s*\}
219
+ keyEquivalent: ^~L
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: Lighttpd
3
+ scopeName: source.lighttpd-config
4
+ uuid: C244BFF4-2C1A-490F-831E-8EF7DF4E0C9B
5
+ foldingStartMarker: (\{|\()\s*$
6
+ patterns:
7
+ - name: comment.line.number-sign.lighttpd-config
8
+ captures:
9
+ "1":
10
+ name: punctuation.definition.comment.lighttpd-config
11
+ match: (#).*$\n?
12
+ - captures:
13
+ "1":
14
+ name: punctuation.separator.key-value.lighttpd-config
15
+ "2":
16
+ name: string.regexp.lighttpd-config
17
+ "3":
18
+ name: punctuation.definition.string.begin.lighttpd-config
19
+ "4":
20
+ name: punctuation.definition.string.end.lighttpd-config
21
+ match: (=~|!~)\s*((").*("))
22
+ - captures:
23
+ "1":
24
+ name: punctuation.separator.key-value.lighttpd-config
25
+ "2":
26
+ name: constant.numeric.lighttpd-config
27
+ match: (=>?)\s*([0-9]+)
28
+ - name: punctuation.separator.key-value.lighttpd-config
29
+ match: =|\+=|==|!=|=~|!~|=>
30
+ - name: string.quoted.double.lighttpd-config
31
+ endCaptures:
32
+ "0":
33
+ name: punctuation.definition.string.end.lighttpd-config
34
+ begin: "\""
35
+ beginCaptures:
36
+ "0":
37
+ name: punctuation.definition.string.begin.lighttpd-config
38
+ end: "\""
39
+ patterns:
40
+ - name: constant.character.escape.quote.lighttpd-config
41
+ match: "\"\""
42
+ - name: variable.language.lighttpd-config
43
+ captures:
44
+ "1":
45
+ name: punctuation.definition.variable.lighttpd-config
46
+ match: (\$)[a-zA-Z][0-9a-zA-Z]*
47
+ - name: support.constant.name.lighttpd-config
48
+ match: ^\s*[a-zA-Z][0-9a-zA-Z.-]*
49
+ - captures:
50
+ "1":
51
+ name: invalid.illegal.semicolon-at-end-of-line.lighttpd-config
52
+ match: (;)\s*$
53
+ foldingStopMarker: ^\s*(\}|\))
54
+ keyEquivalent: ^~L
@@ -0,0 +1,492 @@
1
+ ---
2
+ name: Lilypond
3
+ fileTypes:
4
+ - ly
5
+ - ily
6
+ scopeName: source.lilypond
7
+ repository:
8
+ g_markup:
9
+ name: meta.element.markup.lilypond
10
+ begin: "(?x)\n\
11
+ \t\t\t\t((\\\\) markup) \\s+ # backslash + \"markup\" + spaces\n\
12
+ \t\t\t\t(?={)\n\
13
+ \t\t\t"
14
+ beginCaptures:
15
+ "1":
16
+ name: support.function.element.markup.lilypond
17
+ "2":
18
+ name: punctuation.definition.function.markup
19
+ end: (?<=})
20
+ patterns:
21
+ - include: "#g_m_group"
22
+ comments:
23
+ patterns:
24
+ - name: comment.block.lilypond
25
+ captures:
26
+ "0":
27
+ name: punctuation.definition.comment.lilypond
28
+ begin: "%{"
29
+ end: "%}"
30
+ - name: comment.line.lilypond
31
+ begin: "%"
32
+ beginCaptures:
33
+ "0":
34
+ name: punctuation.definition.comment.lilypond
35
+ end: $\n?
36
+ g_times:
37
+ begin: ((\\)times)\s*(?:([1-9][0-9]*/[1-9][0-9])\s*)(?={)
38
+ beginCaptures:
39
+ "1":
40
+ name: support.function.section.lilypond
41
+ "2":
42
+ name: punctuation.definition.function.lilypond
43
+ "3":
44
+ name: constant.numeric.fraction.lilypond
45
+ end: (?<=})
46
+ patterns:
47
+ - include: "#group"
48
+ f_keywords:
49
+ name: keyword.control.lilypond
50
+ captures:
51
+ "1":
52
+ name: punctuation.definition.function.lilypond
53
+ match: "(?x)\n\
54
+ \t\t\t\t(?: (\\\\)\n\
55
+ \t\t\t\t (?: set | new | override | revert)\n\
56
+ \t\t\t\t)\n\
57
+ \t\t\t"
58
+ f_clef:
59
+ name: meta.element.clef.lilypond
60
+ captures:
61
+ "6":
62
+ name: meta.fixme.unknown-clef-name.lilypond
63
+ "7":
64
+ name: constant.other.modifier.clef.lilypond
65
+ "8":
66
+ name: punctuation.definition.string.lilypond
67
+ "1":
68
+ name: support.function.element.lilypond
69
+ "2":
70
+ name: punctuation.definition.function.lilypond
71
+ "3":
72
+ name: punctuation.definition.string.lilypond
73
+ "4":
74
+ name: constant.language.clef-name.lilypond
75
+ "5":
76
+ name: constant.other.modifier.clef.lilypond
77
+ match: "(?x)\n\
78
+ \t\t\t\t((\\\\) clef) \\s+ # backslash + \"clef\" + spaces (groups 1-2)\n\
79
+ \t\t\t\t(?:\n\
80
+ \t\t\t\t (\"?)\t# beginning quotes (group 3)\n\
81
+ \t\t\t\t ( (?: # group 4\n\
82
+ \t\t\t\t\t treble | violin | G | french | # G clefs\n\
83
+ \t\t\t\t alto | C | tenor | (?:mezzo)?soprano | baritone | # C clefs\n\
84
+ \t\t\t\t (?:sub)?bass | F | varbaritone | # F clefs\n\
85
+ \t\t\t\t percussion | tab | # percussion / tablature clefs\n \n\
86
+ \t\t\t (?:neo)?mensural-c[1-4] | mensural-[fg] | \t\t# Ancient clefs\n\
87
+ \t\t\t\t petrucci-(?: [fg] | c[1-5] ) |\n\
88
+ \t\t\t\t (?: vaticana | medicaea | hufnagel ) - (?: do[1-3] | fa[12] ) |\n\
89
+ \t\t\t\t hufnagel-do-fa\n\
90
+ \t\t\t\t )\n\
91
+ \t\t\t\t ([_^](?:8|15)?)? # optionally shift 1-2 octaves \xE2\x86\x91/\xE2\x86\x93 (group 5)\n\
92
+ \t\t\t\t ) |\n\
93
+ \t\t\t\t ( (?:\\w+) ([_^](?:8|15))? ) # unknown clef name (groups 6-7)\n\
94
+ \t\t\t\t (\\3) # closing quotes (group 8)\n\
95
+ \t\t\t\t)?\n\
96
+ \t\t\t"
97
+ comment: "\n\
98
+ \t\t\t\tThis looks something like: \\clef mezzosoprano_8\n\
99
+ \t\t\t\tOr maybe: \\clef neomensural-c3^15\n\
100
+ \t\t\t"
101
+ g_relative:
102
+ begin: ((\\)relative)\s*(?:([a-h][',]*)\s*)?(?={)
103
+ beginCaptures:
104
+ "1":
105
+ name: support.function.section.lilypond
106
+ "2":
107
+ name: punctuation.definition.function.lilypond
108
+ "3":
109
+ name: storage.type.pitch.lilypond
110
+ end: (?<=})
111
+ patterns:
112
+ - include: "#group"
113
+ scheme:
114
+ begin: "#"
115
+ contentName: source.scheme.embedded.lilypond
116
+ beginCaptures:
117
+ "0":
118
+ name: punctuation.section.embedded.scheme.lilypond
119
+ end: (?=[\s%])|(?<=\n)
120
+ patterns:
121
+ - include: source.scheme
122
+ comment: "\n\
123
+ \t\t\t\tLilypond source can embed scheme code to do things more\n\
124
+ \t\t\t\tflexibly than allowed by the basic language.\n\n\
125
+ \t\t\t\tWe need to make sure to match after a \\n, as included\n\
126
+ \t\t\t\tby some s-expressions in the scheme grammar.\n\
127
+ \t\t\t"
128
+ notes:
129
+ patterns:
130
+ - name: meta.element.note.lilypond
131
+ begin: "(?x)\\b\n\
132
+ \t\t\t\t\t (\t\t\t\t\t\t # (group 1)\n\
133
+ \t\t\t\t\t\t ( [a-h] # Pitch (group 2)\n\
134
+ \t\t\t\t\t\t ( (?:i[sh]){1,2} | # - sharp (group 3)\n\
135
+ \t\t\t\t\t\t (?:e[sh]|s){1,2} # - flat\n\
136
+ \t\t\t\t\t\t )?\n\
137
+ \t\t\t\t\t ([!?])? # Cautionary accidental (group 4)\n\
138
+ \t\t\t\t\t ('+|,+)? # Octave (group 5)\n\
139
+ \t\t\t\t\t\t )\n\
140
+ \t\t\t\t\t\t ( ( ((\\\\)breve)| # Duration (groups 6-9)\n\
141
+ \t\t\t\t\t\t 64|32|16|8|4|2|1\n\
142
+ \t\t\t\t\t\t )\n\
143
+ \t\t\t\t\t\t (\\.)? # Augmentation dot (group 10)\n\
144
+ \t\t\t\t\t\t\t((\\*)(\\d+(?:/\\d+)?))? # Scaling duration (groups 11-13)\n\
145
+ \t\t\t\t\t\t )?\n\
146
+ \t\t\t\t\t\t)(?![a-z])\t# do not follow a note with a letter\n\
147
+ \t\t\t\t\t"
148
+ beginCaptures:
149
+ "6":
150
+ name: storage.type.duration.lilypond
151
+ "12":
152
+ name: keyword.operator.duration-scale.lilypond
153
+ "13":
154
+ name: constant.numeric.fraction.lilypond
155
+ "9":
156
+ name: punctuation.definition.function.lilypond
157
+ "2":
158
+ name: storage.type.pitch.lilypond
159
+ "4":
160
+ name: meta.note-modifier.cautionary-accidental.lilypond
161
+ "5":
162
+ name: meta.note-modifier.octave.lilypond
163
+ end: "(?x)\n\
164
+ \t\t\t\t\t\t(?= [ }~a-z] ) # End when we encounter a space or }\n\
165
+ \t\t\t\t\t"
166
+ patterns:
167
+ - include: "#n_articulations"
168
+ comment: "\n\
169
+ \t\t\t\t\t\tThis rule handles notes, including the pitch, the\n\
170
+ \t\t\t\t\t\tduration, and any articulations drawn along with\n\
171
+ \t\t\t\t\t\tthe note.\n\
172
+ \t\t\t\t\t\t\n\
173
+ \t\t\t\t\t\tThis rule gets a whole lot uglier if we want to\n\
174
+ \t\t\t\t\t\tsupport multilingual note names. If so, the rule\n\
175
+ \t\t\t\t\t\tgoes something like:\n\
176
+ \t\t\t\t\t\t\n\
177
+ \t\t\t\t\t\t(?x)\n\
178
+ \t\t\t\t\t\t\t\\b( # Basic Pitches\n\
179
+ \t\t\t\t\t\t\t [a-h] # Dutch/English/etc. \n\
180
+ \t\t\t\t\t\t\t (?: (iss?|s|sharp|x)(iss?|s|sharp|x|ih) | # sharp / flat\n\
181
+ \t\t\t\t\t\t\t\t (ess?|s|flat|f)(ess?|s|flat|f|eh)\n\
182
+ \t\t\t\t\t\t\t )? |\n\
183
+ \t\t\t\t\t\t\t (?: do|re|mi|fa|sol|la|si) # Italian/Spanish\n\
184
+ \t\t\t\t\t\t\t (?: ss?|dd?bb?) # sharp/flat\n\
185
+ \t\t\t\t\t\t\t)\n\
186
+ \t\t\t\t\t\t...\n\
187
+ \t\t\t\t\t"
188
+ - name: meta.element.pause.rest.lilypond
189
+ begin: "(?x)\\b\n\
190
+ \t\t\t\t\t\t(r) # (group 1)\n\
191
+ \t\t\t\t\t\t( ( (\\\\)breve| # Duration (groups 2-4)\n\
192
+ \t\t\t\t\t\t 64|32|16|8|4|2|1\n\
193
+ \t\t\t\t\t\t )\n\
194
+ \t\t\t\t\t\t (\\.)? # Augmentation dot (group 5)\n\
195
+ \t\t\t\t\t\t ((\\*)(\\d+(?:/\\d+)?))? # Scaling duration (groups 6-8)\n\
196
+ \t\t\t\t\t\t\n\
197
+ \t\t\t\t\t\t)?\n\
198
+ \t\t\t\t\t\t(?![a-z])\t# do not follow a note with a letter\n\
199
+ \t\t\t\t\t"
200
+ beginCaptures:
201
+ "6":
202
+ name: keyword.operator.duration-scale.lilypond
203
+ "8":
204
+ name: constant.numeric.fraction.lilypond
205
+ "1":
206
+ name: storage.type.pause.rest.lilypond
207
+ "2":
208
+ name: storage.type.duration.lilypond
209
+ "4":
210
+ name: punctuation.definition.function.lilypond
211
+ end: (?=[ }~a-z])
212
+ patterns:
213
+ - include: "#n_articulations"
214
+ - name: meta.element.pause.skip.lilypond
215
+ begin: "(?x)\\b\n\
216
+ \t\t\t\t\t\t(s) # (group 1)\n\
217
+ \t\t\t\t\t\t( ( (\\\\)breve| # Duration (groups 2-4)\n\
218
+ \t\t\t\t\t\t 64|32|16|8|4|2|1\n\
219
+ \t\t\t\t\t\t )\n\
220
+ \t\t\t\t\t\t (\\.)? # Augmentation dot (group 5)\n\
221
+ \t\t\t\t\t\t ((\\*)(\\d+(?:/\\d+)?))? # Scaling duration (groups 6-8)\n\
222
+ \t\t\t\t\t\t\n\
223
+ \t\t\t\t\t\t)?\n\
224
+ \t\t\t\t\t\t(?![a-z])\t# do not follow a note with a letter\n\
225
+ \t\t\t\t\t"
226
+ beginCaptures:
227
+ "6":
228
+ name: keyword.operator.duration-scale.lilypond
229
+ "8":
230
+ name: constant.numeric.fraction.lilypond
231
+ "1":
232
+ name: storage.type.pause.skip.lilypond
233
+ "2":
234
+ name: storage.type.duration.lilypond
235
+ "4":
236
+ name: punctuation.definition.function.lilypond
237
+ end: (?=[ }~a-z])
238
+ patterns:
239
+ - include: "#n_articulations"
240
+ - name: meta.element.pause.skip.lilypond
241
+ captures:
242
+ "1":
243
+ name: storage.type.pause.skip.lilypond
244
+ "2":
245
+ name: punctuation.definition.function.lilypond
246
+ "3":
247
+ name: storage.type.duration.lilypond
248
+ match: ((\\)skip)\s+(64|32|16|8|4|2|1)
249
+ - name: meta.element.chord.lilypond
250
+ endCaptures:
251
+ "1":
252
+ name: punctuation.definition.chord.lilypond
253
+ "2":
254
+ name: storage.type.duration.lilypond
255
+ "4":
256
+ name: punctuation.definition.function.lilypond
257
+ begin: <
258
+ beginCaptures:
259
+ "0":
260
+ name: punctuation.definition.chord.lilypond
261
+ end: "(?x)\n\
262
+ \t\t\t\t\t\t(>)\n\
263
+ \t\t\t\t\t\t( ( ((\\\\)breve)| # Duration (groups 2-4)\n\
264
+ \t\t\t\t\t\t 64|32|16|8|4|2|1\n\
265
+ \t\t\t\t\t\t )\n\
266
+ \t\t\t\t\t\t (\\.)? # Augmentation dot (group 5)\n\
267
+ \t\t\t\t\t\t)?\n\
268
+ \t\t\t\t\t"
269
+ patterns:
270
+ - captures:
271
+ "1":
272
+ name: storage.type.pitch.lilypond
273
+ "3":
274
+ name: meta.note-modifier.cautionary-accidental.lilypond
275
+ "4":
276
+ name: meta.note-modifier.octave.lilypond
277
+ match: "(?x)\\b\n\
278
+ \t\t\t\t\t\t\t\t ( [a-h] # Pitch (group 1)\n\
279
+ \t\t\t\t\t\t\t\t ( (?:i[sh]){1,2} | # - sharp (group 2)\n\
280
+ \t\t\t\t\t\t\t\t (?:e[sh]|s){1,2} # - flat\n\
281
+ \t\t\t\t\t\t\t\t )?\n\
282
+ \t\t\t\t\t\t\t ([!?])? # Cautionary accidental (group 3)\n\
283
+ \t\t\t\t\t\t\t ('+|,+)? # Octave (group 4)\n\
284
+ \t\t\t\t\t\t\t\t )\n\
285
+ \t\t\t\t\t\t\t"
286
+ comment: "\n\
287
+ \t\t\t\t\t\tLilypond chords look like: < a b c >\n\
288
+ \t\t\t\t\t"
289
+ - name: meta.element.chord.lilypond
290
+ begin: (?<=>)(?<!->)(?!\s)
291
+ end: (?=[ }~a-z])(?<![^-]>)
292
+ patterns:
293
+ - include: "#n_articulations"
294
+ comment: "\n\
295
+ \t\t\t\t\t\tThis rule attaches stuff to the end of a chord\n\
296
+ \t\t\t\t\t\t\n\
297
+ \t\t\t\t\t\tTherefore it begins after the > which ends a chord,\n\
298
+ \t\t\t\t\t\tand does not end after a > which ends a chord.\n\
299
+ \t\t\t\t\t\t(to avoid infinite loops)\n\
300
+ \t\t\t\t\t"
301
+ - name: storage.type.tie.lilypond
302
+ match: "~"
303
+ - name: storage.type.breath-mark.lilypond
304
+ captures:
305
+ "1":
306
+ name: punctuation.definition.function.lilypond
307
+ match: (\\)breathe
308
+ comment: "\n\
309
+ \t\t\t\tThis section includes the rules for notes, rests, and chords\n\
310
+ \t\t\t"
311
+ n_articulations:
312
+ patterns:
313
+ - name: storage.modifier.articulation.accent.lilypond
314
+ match: "(?x)\n\
315
+ \t\t\t\t\t\t([_^-])\n\
316
+ \t\t\t\t\t\t(?:[.>^+_-])\n\
317
+ \t\t\t\t\t"
318
+ - name: storage.modifier.articulation.named.lilypond
319
+ captures:
320
+ "1":
321
+ name: punctuation.definition.function.lilypond
322
+ match: "(?x)\n\
323
+ \t\t\t\t\t\t(\\\\)\n\
324
+ \t\t\t\t\t\t(?: accent | markato | staccatissimo |\t\t # basic accents\n\
325
+ \t\t\t\t\t\t\tespressivo | staccato | tenuto | portato | \n\
326
+ \t\t\t\t\t\t\t(?:up|down)bow | flageolet | thumb |\n\
327
+ \t\t\t\t\t\t\t[lr](?:heel|toe) | open | stopped |\n\
328
+ \t\t\t\t\t\t\t(?:reverse)?turn | trill |\n\
329
+ \t\t\t\t\t\t\tprall(?: prall | mordent | down | up)? | # pralls\n\
330
+ \t\t\t\t\t\t\t(?: up | down | line ) prall | # and\n\
331
+ \t\t\t\t\t\t\t(?: up | down )? mordent | # mordents\n\
332
+ \t\t\t\t\t\t\tsignumcongruentiae |\n\
333
+ \t\t\t\t\t\t\t(?: (?:very)? long | short)?fermata(Markup)? | # fermatas\n\
334
+ \t\t\t\t\t\t\tsegno | (?:var)?coda \n\
335
+ \t\t\t\t\t\t)\n\
336
+ \t\t\t\t\t"
337
+ - name: storage.modifier.articulation.dynamics.lilypond
338
+ match: "(?x)\n\
339
+ \t\t\t\t\t\t(\\\\) # backslash\n\
340
+ \t\t\t\t\t\tp{1,5} | m[pf] | f{1,4} | fp | # forte, piano, etc.\n\
341
+ \t\t\t\t\t\tsff? | spp? | [sr]fz | \n\
342
+ \t\t\t\t\t\t< | > | ! | espressivo # (de)crescendo\n\
343
+ \t\t\t\t\t"
344
+ - name: storage.modifier.beam.lilypond
345
+ match: \[|\]
346
+ - name: storage.modifier.slur.lilypond
347
+ match: \(|\)
348
+ functions:
349
+ patterns:
350
+ - include: "#f_clef"
351
+ - include: "#f_time-signature"
352
+ - include: "#f_key-signature"
353
+ - include: "#f_keywords"
354
+ - include: "#f_generic"
355
+ strings:
356
+ name: string.quoted.double.lilypond
357
+ captures:
358
+ "0":
359
+ name: punctuation.definition.string.lilypond
360
+ begin: "\""
361
+ end: "\""
362
+ patterns:
363
+ - name: constant.character.escape.lilypond
364
+ match: \\.
365
+ f_key-signature:
366
+ name: meta.element.key-signature.lilypond
367
+ comment: FIXME
368
+ music-expr:
369
+ patterns:
370
+ - include: "#comments"
371
+ - include: "#groupings"
372
+ - include: "#strings"
373
+ - include: "#functions"
374
+ - include: "#scheme"
375
+ - include: "#notes"
376
+ g_system:
377
+ name: meta.system.lilypond
378
+ endCaptures:
379
+ "0":
380
+ name: punctuation.section.system.end.lilypond
381
+ begin: "<<"
382
+ beginCaptures:
383
+ "0":
384
+ name: punctuation.section.system.begin.lilypond
385
+ end: ">>"
386
+ patterns:
387
+ - include: $self
388
+ f_generic:
389
+ name: support.function.general.lilypond
390
+ captures:
391
+ "1":
392
+ name: punctuation.definition.function.lilypond
393
+ match: (\\)[a-zA-Z-]+\b
394
+ groupings:
395
+ patterns:
396
+ - include: "#g_system"
397
+ - include: "#g_relative"
398
+ - include: "#g_times"
399
+ - include: "#group"
400
+ group:
401
+ name: meta.music-expression.lilypond
402
+ endCaptures:
403
+ "0":
404
+ name: punctuation.section.group.end.lilypond
405
+ begin: "{"
406
+ beginCaptures:
407
+ "0":
408
+ name: punctuation.section.group.begin.lilypond
409
+ end: "}"
410
+ patterns:
411
+ - include: "#music-expr"
412
+ g_header:
413
+ name: meta.header.lilypond
414
+ endCaptures:
415
+ "0":
416
+ name: punctuation.section.group.end.lilypond
417
+ begin: ((\\)header)\s*({)
418
+ beginCaptures:
419
+ "1":
420
+ name: support.function.section.header.lilypond
421
+ "2":
422
+ name: punctuation.definition.function.lilypond
423
+ "3":
424
+ name: punctuation.section.group.begin.lilypond
425
+ end: "}"
426
+ patterns:
427
+ - include: "#comments"
428
+ - include: "#strings"
429
+ - include: "#scheme"
430
+ - include: "#g_markup"
431
+ - name: punctuation.separator.key-value.lilypond
432
+ match: "="
433
+ - name: support.constant.header.lilypond
434
+ match: "(?x)\n\
435
+ \t\t\t\t\t\tdedication | title | subtitle | subsubtitle | poet |\n\
436
+ \t\t\t\t\t\tcomposer | meter | opus | arranger | instrument |\n\
437
+ \t\t\t\t\t\tpiece | breakbefore | copyright | tagline | enteredby\n\
438
+ \t\t\t\t\t"
439
+ - name: support.constant.header.mutopia.lilypond
440
+ match: "(?x)\n\
441
+ \t\t\t\t\t\tmutopiatitle | mutopiacomposer | mutopiapoet |\n\
442
+ \t\t\t\t\t\tmutopiaopus | mutopiainstrument | date | source |\n\
443
+ \t\t\t\t\t\tstyle | maintainer | maintainerEmail |\n\
444
+ \t\t\t\t\t\tmaintainerWeb | lastupdated\n\
445
+ \t\t\t\t\t"
446
+ g_m_group:
447
+ name: meta.group.lilypond
448
+ endCaptures:
449
+ "0":
450
+ name: punctuation.section.group.end.lilypond
451
+ begin: "{"
452
+ beginCaptures:
453
+ "0":
454
+ name: punctuation.section.group.begin.lilypond
455
+ end: "}"
456
+ patterns:
457
+ - include: "#f_generic"
458
+ - include: "#strings"
459
+ - include: "#comments"
460
+ - include: "#scheme"
461
+ - include: "#g_m_group"
462
+ f_time-signature:
463
+ name: meta.element.time-signature.lilypond
464
+ captures:
465
+ "1":
466
+ name: support.function.element.lilypond
467
+ "2":
468
+ name: punctuation.definition.function.lilypond
469
+ "3":
470
+ name: constant.numeric.time-signature.lilypond
471
+ match: "(?x)\n\
472
+ \t\t\t\t((\\\\) time) \\s+ # backslash + \"time\" + spaces (groups 1-2)\n\
473
+ \t\t\t\t([1-9][0-9]*/[1-9][0-9]*)?\n\
474
+ \t\t\t"
475
+ uuid: F25B30BE-0526-4D92-806C-F0D678DDF669
476
+ foldingStartMarker: (\{|<<)\s*$
477
+ patterns:
478
+ - include: "#comments"
479
+ - include: "#g_header"
480
+ - include: "#groupings"
481
+ - include: "#strings"
482
+ - include: "#scheme"
483
+ - include: "#functions"
484
+ foldingStopMarker: (\}|>>)
485
+ keyEquivalent: ^~L
486
+ comment: "\n\
487
+ \t\tThis bundle is, as can easily be seen, far from complete,\n\
488
+ \t\tbut it should still be as useful as the Lilypond.app pyobjc\n\
489
+ \t\tapplication, which has no syntax coloring, no way to do\n\
490
+ \t\tsnippets, and pretty much no interesting functionality at\n\
491
+ \t\tall, other than a \"Run\" menu option. :)\n\
492
+ \t"