author | Lorenzo Bettini <bettini@dsi.unifi.it> | 2012年04月14日 17:11:29 +0200 |
---|---|---|
committer | Lorenzo Bettini <bettini@dsi.unifi.it> | 2012年04月14日 17:11:29 +0200 |
commit | 7356b4a61659d2031034eff21c9ca2745e2a1e21 (patch) | |
tree | eb8f90679e50bd60aec6d14ede54966516056613 /src | |
parent | c65db3fa0978ca32926d46f09db10738332d7b49 (diff) | |
download | src-highlite-7356b4a61659d2031034eff21c9ca2745e2a1e21.tar.gz |
-rw-r--r-- | src/Makefile.am | 5 | ||||
-rw-r--r-- | src/lang.map | 4 | ||||
-rw-r--r-- | src/lilypond.lang | 143 | ||||
-rw-r--r-- | src/lilypond.style | 21 |
diff --git a/src/Makefile.am b/src/Makefile.am index 0f2bf1f..d3fc9a2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -83,7 +83,8 @@ texinfo.lang haskell.lang haskell_literate.lang \ manifest.lang asm.lang todo.lang applescript.lang \ vbscript.lang awk.lang bat.lang clipper.lang cobol.lang d.lang \ errors.lang erlang.lang proto.lang vala.lang lisp.lang \ -scheme.lang po.lang opa.lang javalog.lang upc.lang tml.lang +scheme.lang po.lang opa.lang javalog.lang upc.lang tml.lang \ +lilypond.lang LANGFILES_NOTTOCHECK= \ tml_formatting_all.lang tml_macrolinks.lang tml_macrosdelayed2.lang \ @@ -115,7 +116,7 @@ odf.outlang \ mediawiki.outlang -STYLEFILES = texinfo.style esc.style +STYLEFILES = texinfo.style esc.style lilypond.style source_highlightdata_DATA = \ $(LANGFILES) $(LANGFILES_NOTTOCHECK) $(OUTLANGFILES) \ diff --git a/src/lang.map b/src/lang.map index ee05df7..2eefacd 100644 --- a/src/lang.map +++ b/src/lang.map @@ -150,4 +150,6 @@ pot = po.lang opa = opa.lang javalog = javalog.lang upc = upc.lang -tml = tml.lang
\ No newline at end of file +tml = tml.lang +lilypond = lilypond.lang +ly = lilypond.lang
\ No newline at end of file diff --git a/src/lilypond.lang b/src/lilypond.lang new file mode 100644 index 0000000..e75655d --- /dev/null +++ b/src/lilypond.lang @@ -0,0 +1,143 @@ +# LilyPond v2.16.0 +# Federico Bruni + +string delim "\"" "\"" multiline + +comment delim "%{" "%}" multiline nested +comment start "%" + +# Scheme +environment scheme delim '#\'?\(' ")" multiline nested begin + string delim "\"" "\"" multiline + comment start ";" + environment scheme delim "(" ")" multiline nested begin + string delim "\"" "\"" multiline + comment start ";" + end +end + +vardef SCHEME_VALUE = '##(t|f)', '#{1,2}\'?[[:alnum:]\.:+-]+' +scheme_value = $SCHEME_VALUE + + +# Symbols +vardef CBRACKET = "{|}|<<|>>" +cbracket = $CBRACKET + +symbol = "(|)|~|^|_" +dynamic = '\\(<|>|!|f{1,5}|p{1,5}|m(f|p)|fp|(r|s)fz|s(f|p){1,2})(?!\w)' + +# Numbers +specialchar = '(?<!#)-[1-5]\b', '\\[0-9]\b' # strings and fingerings +note_duration = '(?<=[a-zR\',!?>\*])(1|2|4|8|16|32|64|128)(\.+|\b)' +value = '[[:digit:]/]+' + +# Markup commands (any \command inside \markup{}) +environment markup delim '\\markup\s*\{' "}" multiline nested begin + # definitions I want to preserve in this environment + cbracket = $CBRACKET + string delim "\"" "\"" multiline + comment delim "%{" "%}" multiline nested + comment start "%" + scheme_value = $SCHEME_VALUE + environment scheme delim '#\'?\(' ")" multiline nested begin + string delim "\"" "\"" multiline + comment start ";" + environment scheme delim "(" ")" multiline nested begin + string delim "\"" "\"" multiline + comment start ";" + end + end + # actual definition + markup_command = '\\[[:alpha:]-]+' + + # needed for nested blocks inside \markup{} + environment markup delim "{" "}" multiline nested begin + cbracket = $CBRACKET + string delim "\"" "\"" multiline + comment delim "%{" "%}" multiline nested + comment start "%" + scheme_value = $SCHEME_VALUE + environment scheme delim '#\'?\(' ")" multiline nested begin + string delim "\"" "\"" multiline + comment start ";" + environment scheme delim "(" ")" multiline nested begin + string delim "\"" "\"" multiline + comment start ";" + end + end + markup_command = '\\[[:alpha:]-]+' + end +end + +lyric_command = '\\(lyricmode|lyrics(to)?)' + +# Main commands +preproc = '\\(book(part)?|context|consists|header|include|language|layout', + 'midi|once|override(Property)?|paper|remove(WithTag)?', + 'revert|score|(un)?set|version|with)\b' + +# Variables of music functions +variable = '(alto|baritone|bass|french|mezzosoprano|percussion', + 'soprano|subbass|tenor|treble|varbaritone', + 'percent|tremolo|unfold|volta', + '\\(aeolian|dorian|ionian|lydian|locrian|minor|major|mixolydian|phrygian))\b' + +header_variable = 'arranger', 'breakbefore', 'composer', 'copyright', 'date', + 'dedication', 'enteredby', 'filename', 'footer', 'instrument\b', 'lastupdated', + 'maintainer(Email|Web)?', 'meter', 'moreInfo', + 'mutopia(composer|instrument|opus|poet|title)?', + 'opus', 'poet', 'piece', 'source(url)?', 'style', '(sub){0,2}title', + 'tagline', 'texidoc' + +# Contexts +# old regexp: '([A-Z][a-z]+){2,}' <-- too greedy, a list is better +context = '\\?(ChoirStaff|ChordNames|CueVoice|Devnull|Drum(Staff|Voice)', + 'Dynamics|FiguredBass|FretBoards|Global|GrandStaff', + 'GregorianTranscription(Staff|Voice)|Lyrics|Mensural(Staff|Voice)', + 'NoteNames|PianoStaff|RhythmicStaff|Score|Staff(Group)?', + 'Tab(Staff|Voice)|Vaticana(Staff|Voice)|Voice)\b' + +# Layout objects +layout_object = 'Accidental(Cautionary|Placement|Suggestion)?', + 'Ambitus(Accidental|Line|NoteHead)?', 'Arpeggio', 'BalloonTextItem', + 'Bar(Line|Number)?', 'BassFigure(Alignment(Positioning)?|Bracket|Continuation|Line)?', + 'Beam', 'BendAfter', 'Break(AlignGroup|Alignment)?', 'BreathingSign', + 'ChordName', 'Clef', 'Cluster(Spanner(Beacon)?)', 'CombineTextScript', + 'Cue(Clef|EndClef)?', 'Custos', 'Dot(Column|s)?', + 'Double(PercentRepeat(Counter)?|RepeatSlash)?', + 'Dynamic(LineSpanner|Text|TextSpanner)?\b', 'Episema', 'Fingering', 'Flag', + 'Footnote(Item|Spanner)', 'FretBoard', 'Glissando', 'GraceSpacing', + 'Grid(Line|Point)', 'Hairpin', 'HorizontalBracket', + 'Instrument(Name|Switch)', 'Key(Cancellation|Signature)', + 'Laissez(VibrerTie(Column)?)', 'LedgerLineSpanner', + 'LeftEdge', 'LigatureBracket', + 'Lyric(Extender|Hyphen|Space|Text)', 'MeasureGrouping', + 'MelodyItem', 'MensuralLigature', 'MetronomeMark', + 'MultiMeasureRest(Number|Text)?', 'NonMusicalPaperColumn', + 'Note(Collision|Column|Head|Name|Spacing)', 'OctavateEight', + 'OttavaBracket', 'PaperColumn', 'ParenthesesItem', + 'Percent(Repeat(Counter)?)', 'PhrasingSlur', 'PianoPedalBracket', + 'RehearsalMark', 'Repeat(Slash|Tie(Column)?)', 'Rest(Collision)?', + 'Script(Column|Row)?', 'Slur', 'Sostenuto(Pedal(LineSpanner)?)', + 'SpacingSpanner', 'SpanBar', 'Staff(Grouper|Spacing|Symbol)', + 'StanzaNumber', 'Stem(Tremolo)?', 'StringNumber', 'StrokeFinger', + 'SustainPedal(LineSpanner)?', + 'System(StartBar|StartBrace|StartBracket|StartSquare)?', + 'TabNoteHead', 'Text(Script|Spanner)', 'Tie(Column)?', 'TimeSignature', + 'TrillPitch(Accidental|Group|Head)', 'TrillSpanner', + 'Tuplet(Bracket|Number)', 'UnaCordaPedal(LineSpanner)?', + 'VaticanaLigature', 'Vertical(Alignment|AxisGroup)', 'VoiceFollower', + 'VoltaBracket(Spanner)?' + +# Context properties +context_property = '\b[a-z]+([A-Z]+[a-z]+)+', + 'ottavation|output|stanza|timing|tonic' + +# Layout properties +layout_property = '\b[a-z]+(-[a-z]+)+', 'indent' + +# All the other commands (including variables defined by users). +# It must be at the end, otherwise the other \command definitions are overwritten. +function = '\\[[:alpha:]-]+' + diff --git a/src/lilypond.style b/src/lilypond.style new file mode 100644 index 0000000..bc9d407 --- /dev/null +++ b/src/lilypond.style @@ -0,0 +1,21 @@ +symbol "#C000C0" b ; +cbracket, preproc black b ; +dynamic "#FF8000" b ; + +string "#C20F0F" ; +scheme, scheme_value "#A04900" ; +comment gray i ; + +note_duration teal ; +value "#808000" ; +specialchar "#FF8000" ; + +function "#0000C0" b ; +markup_command "#008000" ; +lyric_command "#006000" b ; + +header_variable, variable blue ; +context "#C000C0" b ; +layout_object "#C000C0" ; +context_property, layout_property blue ; + |