textpow 0.10.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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"