textpow 0.10.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. data/.travis.yml +7 -0
  2. data/Gemfile +10 -0
  3. data/Gemfile.lock +30 -0
  4. data/{History.txt → History.rdoc} +10 -0
  5. data/{README.txt → MIT-LICENSE.txt} +0 -30
  6. data/README.rdoc +82 -0
  7. data/Rakefile +42 -49
  8. data/bin/plist2syntax +0 -0
  9. data/bin/plist2yaml +0 -0
  10. data/examples/benchmark_js.rb +13 -0
  11. data/examples/jquery.js +9046 -0
  12. data/lib/textpow.rb +43 -3
  13. data/lib/textpow/debug_processor.rb +35 -35
  14. data/lib/textpow/recording_processor.rb +13 -0
  15. data/lib/textpow/score_manager.rb +60 -60
  16. data/lib/textpow/syntax.rb +303 -262
  17. data/lib/textpow/syntax/broken/markdown.syntax +519 -0
  18. data/lib/textpow/syntax/broken/php.syntax +1253 -0
  19. data/lib/textpow/syntax/buggy/nemerle.syntax +74 -0
  20. data/lib/textpow/syntax/old/YAML.yaml +160 -0
  21. data/lib/textpow/syntax/old/txt2tags.yaml +139 -0
  22. data/lib/textpow/syntax/source.actionscript.syntax +97 -0
  23. data/lib/textpow/syntax/source.active4d.library.syntax +21 -0
  24. data/lib/textpow/syntax/source.active4d.syntax +276 -0
  25. data/lib/textpow/syntax/source.ada.syntax +33 -0
  26. data/lib/textpow/syntax/source.antlr.syntax +151 -0
  27. data/lib/textpow/syntax/source.apache-config.mod_perl.syntax +50 -0
  28. data/lib/textpow/syntax/source.apache-config.syntax +191 -0
  29. data/lib/textpow/syntax/source.applescript.syntax +384 -0
  30. data/lib/textpow/syntax/source.asp.syntax +70 -0
  31. data/lib/textpow/syntax/source.asp.vb.net.syntax +129 -0
  32. data/lib/textpow/syntax/source.c++.qt.syntax +26 -0
  33. data/lib/textpow/syntax/source.c++.syntax +186 -0
  34. data/lib/textpow/syntax/source.c-sharp.syntax +59 -0
  35. data/lib/textpow/syntax/source.c.ragel.syntax +201 -0
  36. data/lib/textpow/syntax/source.c.syntax +414 -0
  37. data/lib/textpow/syntax/source.camlp4.ocaml.syntax +36 -0
  38. data/lib/textpow/syntax/source.cm.syntax +32 -0
  39. data/lib/textpow/syntax/source.coffee.syntax +216 -0
  40. data/lib/textpow/syntax/source.context-free.syntax +176 -0
  41. data/lib/textpow/syntax/source.css.beta.syntax +1925 -0
  42. data/lib/textpow/syntax/source.css.syntax +195 -0
  43. data/lib/textpow/syntax/source.d.syntax +142 -0
  44. data/lib/textpow/syntax/source.diff.syntax +81 -0
  45. data/lib/textpow/syntax/source.dot.syntax +47 -0
  46. data/lib/textpow/syntax/source.dylan.syntax +62 -0
  47. data/lib/textpow/syntax/source.eiffel.syntax +78 -0
  48. data/lib/textpow/syntax/source.erlang.syntax +922 -0
  49. data/lib/textpow/syntax/source.fortran.syntax +141 -0
  50. data/lib/textpow/syntax/source.fscript.syntax +80 -0
  51. data/lib/textpow/syntax/source.fxscript.syntax +142 -0
  52. data/lib/textpow/syntax/source.gri.syntax +83 -0
  53. data/lib/textpow/syntax/source.groovy.groovy.syntax +191 -0
  54. data/lib/textpow/syntax/source.haskell.syntax +88 -0
  55. data/lib/textpow/syntax/source.icalendar.syntax +32 -0
  56. data/lib/textpow/syntax/source.inform.syntax +48 -0
  57. data/lib/textpow/syntax/source.ini.syntax +55 -0
  58. data/lib/textpow/syntax/source.io.syntax +81 -0
  59. data/lib/textpow/syntax/source.java-props.syntax +20 -0
  60. data/lib/textpow/syntax/source.java.syntax +211 -0
  61. data/lib/textpow/syntax/source.js.greasemonkey.syntax +34 -0
  62. data/lib/textpow/syntax/source.js.jquery.syntax +114 -0
  63. data/lib/textpow/syntax/source.js.mootools.syntax +572 -0
  64. data/lib/textpow/syntax/source.js.prototype.bracketed.syntax +140 -0
  65. data/lib/textpow/syntax/source.js.prototype.syntax +72 -0
  66. data/lib/textpow/syntax/source.js.syntax +256 -0
  67. data/lib/textpow/syntax/source.js.yui.syntax +176 -0
  68. data/lib/textpow/syntax/source.json.syntax +136 -0
  69. data/lib/textpow/syntax/source.lex.syntax +219 -0
  70. data/lib/textpow/syntax/source.lighttpd-config.syntax +54 -0
  71. data/lib/textpow/syntax/source.lilypond.syntax +492 -0
  72. data/lib/textpow/syntax/source.lisp.syntax +61 -0
  73. data/lib/textpow/syntax/source.logo.syntax +29 -0
  74. data/lib/textpow/syntax/source.logtalk.syntax +152 -0
  75. data/lib/textpow/syntax/source.lua.syntax +86 -0
  76. data/lib/textpow/syntax/source.makefile.syntax +36 -0
  77. data/lib/textpow/syntax/source.matlab.syntax +142 -0
  78. data/lib/textpow/syntax/source.mel.syntax +92 -0
  79. data/lib/textpow/syntax/source.mips.syntax +66 -0
  80. data/lib/textpow/syntax/source.ml.syntax +121 -0
  81. data/lib/textpow/syntax/source.modula-3.syntax +47 -0
  82. data/lib/textpow/syntax/source.nant-build.syntax +53 -0
  83. data/lib/textpow/syntax/source.objc++.syntax +18 -0
  84. data/lib/textpow/syntax/source.objc.syntax +233 -0
  85. data/lib/textpow/syntax/source.ocaml.syntax +764 -0
  86. data/lib/textpow/syntax/source.ocamllex.syntax +167 -0
  87. data/lib/textpow/syntax/source.ocamlyacc.syntax +184 -0
  88. data/lib/textpow/syntax/source.open-gl.syntax +14 -0
  89. data/lib/textpow/syntax/source.pascal.syntax +77 -0
  90. data/lib/textpow/syntax/source.pascal.vectorscript.syntax +57 -0
  91. data/lib/textpow/syntax/source.perl.syntax +1113 -0
  92. data/lib/textpow/syntax/source.php.cake.syntax +55 -0
  93. data/lib/textpow/syntax/source.plist.tm-grammar.syntax +708 -0
  94. data/lib/textpow/syntax/source.postscript.syntax +114 -0
  95. data/lib/textpow/syntax/source.processing.syntax +106 -0
  96. data/lib/textpow/syntax/source.prolog.syntax +40 -0
  97. data/lib/textpow/syntax/source.python.django.syntax +21 -0
  98. data/lib/textpow/syntax/source.python.syntax +868 -0
  99. data/lib/textpow/syntax/source.qmake.syntax +114 -0
  100. data/lib/textpow/syntax/source.quake-config.syntax +32 -0
  101. data/lib/textpow/syntax/source.r-console.syntax +16 -0
  102. data/lib/textpow/syntax/source.r.syntax +81 -0
  103. data/lib/textpow/syntax/source.regexp.oniguruma.syntax +107 -0
  104. data/lib/textpow/syntax/source.regexp.python.syntax +109 -0
  105. data/lib/textpow/syntax/source.regexp.syntax +50 -0
  106. data/lib/textpow/syntax/source.remind.syntax +253 -0
  107. data/lib/textpow/syntax/source.rez.syntax +80 -0
  108. data/lib/textpow/syntax/source.ruby.experimental.syntax +145 -0
  109. data/lib/textpow/syntax/source.ruby.rails.syntax +88 -0
  110. data/lib/textpow/syntax/source.ruby.syntax +1035 -0
  111. data/lib/textpow/syntax/source.s5.syntax +69 -0
  112. data/lib/textpow/syntax/source.sass.syntax +45 -0
  113. data/lib/textpow/syntax/source.scheme.syntax +347 -0
  114. data/lib/textpow/syntax/source.scilab.syntax +41 -0
  115. data/lib/textpow/syntax/source.scss.syntax +527 -0
  116. data/lib/textpow/syntax/source.shell.syntax +384 -0
  117. data/lib/textpow/syntax/source.slate.syntax +149 -0
  118. data/lib/textpow/syntax/source.smarty.syntax +63 -0
  119. data/lib/textpow/syntax/source.sql.ruby.syntax +18 -0
  120. data/lib/textpow/syntax/source.sql.syntax +237 -0
  121. data/lib/textpow/syntax/source.ssh-config.syntax +33 -0
  122. data/lib/textpow/syntax/source.strings.syntax +39 -0
  123. data/lib/textpow/syntax/source.swig.syntax +57 -0
  124. data/lib/textpow/syntax/source.tcl.macports.syntax +163 -0
  125. data/lib/textpow/syntax/source.tcl.syntax +152 -0
  126. data/lib/textpow/syntax/source.yaml.syntax +160 -0
  127. data/lib/textpow/syntax/text.active4d-ini.syntax +50 -0
  128. data/lib/textpow/syntax/text.bbcode.syntax +287 -0
  129. data/lib/textpow/syntax/text.bibtex.syntax +151 -0
  130. data/lib/textpow/syntax/text.blog.html.syntax +41 -0
  131. data/lib/textpow/syntax/text.blog.markdown.syntax +42 -0
  132. data/lib/textpow/syntax/text.blog.syntax +27 -0
  133. data/lib/textpow/syntax/text.blog.textile.syntax +27 -0
  134. data/lib/textpow/syntax/text.gtdalt.syntax +143 -0
  135. data/lib/textpow/syntax/text.haml.syntax +88 -0
  136. data/lib/textpow/syntax/text.html.asp.net.syntax +424 -0
  137. data/lib/textpow/syntax/text.html.asp.syntax +27 -0
  138. data/lib/textpow/syntax/text.html.basic.syntax +362 -0
  139. data/lib/textpow/syntax/text.html.cfm.syntax +119 -0
  140. data/lib/textpow/syntax/text.html.django.syntax +36 -0
  141. data/lib/textpow/syntax/text.html.dokuwiki.syntax +204 -0
  142. data/lib/textpow/syntax/text.html.doxygen.syntax +43 -0
  143. data/lib/textpow/syntax/text.html.markdown.multimarkdown.syntax +39 -0
  144. data/lib/textpow/syntax/text.html.mason.syntax +119 -0
  145. data/lib/textpow/syntax/text.html.mediawiki.syntax +567 -0
  146. data/lib/textpow/syntax/text.html.mt.syntax +162 -0
  147. data/lib/textpow/syntax/text.html.ruby.syntax +40 -0
  148. data/lib/textpow/syntax/text.html.strict.active4d.syntax +311 -0
  149. data/lib/textpow/syntax/text.html.tcl.syntax +26 -0
  150. data/lib/textpow/syntax/text.html.textile.syntax +215 -0
  151. data/lib/textpow/syntax/text.html.tt.syntax +121 -0
  152. data/lib/textpow/syntax/text.html.twiki.syntax +241 -0
  153. data/lib/textpow/syntax/text.html.xhtml.1-strict.syntax +4027 -0
  154. data/lib/textpow/syntax/text.log.latex.syntax +50 -0
  155. data/lib/textpow/syntax/text.mail.markdown.syntax +118 -0
  156. data/lib/textpow/syntax/text.man.syntax +17 -0
  157. data/lib/textpow/syntax/text.moinmoin.syntax +189 -0
  158. data/lib/textpow/syntax/text.plain.gtd.syntax +22 -0
  159. data/lib/textpow/syntax/text.plain.release-notes.syntax +46 -0
  160. data/lib/textpow/syntax/text.plain.syntax +32 -0
  161. data/lib/textpow/syntax/text.plist.syntax +635 -0
  162. data/lib/textpow/syntax/text.pmwiki.syntax +113 -0
  163. data/lib/textpow/syntax/text.restructuredtext.syntax +250 -0
  164. data/lib/textpow/syntax/text.setext.syntax +147 -0
  165. data/lib/textpow/syntax/text.subversion-commit.syntax +36 -0
  166. data/lib/textpow/syntax/text.tabular.csv.syntax +68 -0
  167. data/lib/textpow/syntax/text.tabular.tsv.syntax +50 -0
  168. data/lib/textpow/syntax/text.tex.latex.beamer.syntax +41 -0
  169. data/lib/textpow/syntax/text.tex.latex.haskell.syntax +24 -0
  170. data/lib/textpow/syntax/text.tex.latex.memoir.syntax +64 -0
  171. data/lib/textpow/syntax/text.tex.latex.rd.syntax +91 -0
  172. data/lib/textpow/syntax/text.tex.latex.sweave.syntax +84 -0
  173. data/lib/textpow/syntax/text.tex.latex.syntax +566 -0
  174. data/lib/textpow/syntax/text.tex.math.syntax +49 -0
  175. data/lib/textpow/syntax/text.tex.syntax +86 -0
  176. data/lib/textpow/syntax/text.txt2tags.syntax +79 -0
  177. data/lib/textpow/syntax/text.xml.apple-dist.syntax +77 -0
  178. data/lib/textpow/syntax/text.xml.strict.syntax +92 -0
  179. data/lib/textpow/syntax/text.xml.syntax +180 -0
  180. data/lib/textpow/syntax/text.xml.xsl.syntax +60 -0
  181. data/lib/textpow/version.rb +3 -0
  182. data/spec/fixtures/objeck.plist +107 -0
  183. data/spec/fixtures/utf8.txt +1 -0
  184. data/spec/spec_helper.rb +2 -0
  185. data/spec/textpow/score_manager_spec.rb +20 -0
  186. data/spec/textpow/syntax_files_spec.rb +26 -0
  187. data/spec/textpow/syntax_spec.rb +225 -0
  188. data/spec/textpow_spec.rb +57 -0
  189. data/textpow.gemspec +19 -0
  190. metadata +246 -68
  191. data/Manifest.txt +0 -13
  192. data/mm/manual.mm +0 -266
  193. data/test/test_textpow.rb +0 -25
@@ -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"