lily support

--HG--
branch : pmacs2
This commit is contained in:
moculus 2009-02-18 00:37:11 +00:00
parent f07449a82c
commit 315a590bd9
3 changed files with 195 additions and 4 deletions

View File

@ -115,7 +115,7 @@ class Application(object):
'latex', 'insertmini', 'conf', 'haskell', 'erlang', 'latex', 'insertmini', 'conf', 'haskell', 'erlang',
'iperl', 'iperlmini', 'ipython', 'ipythonmini', 'awk', 'iperl', 'iperlmini', 'ipython', 'ipythonmini', 'awk',
'shell', 'shellmini', 'fstab', 'yacc', 'pipe', 'shell', 'shellmini', 'fstab', 'yacc', 'pipe',
'mbox', 'error', 'lua', 'mbox', 'error', 'lua', 'lily'
) )
for name in names: for name in names:
exec("import mode.%s; mode.%s.install(self)" % (name, name)) exec("import mode.%s; mode.%s.install(self)" % (name, name))

180
code_examples/song.ly Normal file
View File

@ -0,0 +1,180 @@
%% Generated by lilypond-book.py
%% Options: [quote,alt=[image of music],indent=0\mm]
\include "lilypond-book-preamble.ly"
% ****************************************************************
% Start cut-&-pastable-section
% ****************************************************************
\paper {
#(define dump-extents #t)
line-width = 160\mm - 2.0 * 0.4\in
indent = 0\mm
force-assignment = #""
line-width = #(- line-width (* mm 3.000000))
}
\layout {
}
% ****************************************************************
% ly snippet:
% ****************************************************************
\sourcefilename "pitches-headword.ly"
\sourcefileline 0
\version "2.12.0"
\include "english.ly"
#(set-global-staff-size 15)
\paper{
ragged-right=##t
line-width=17\cm
indent=0\cm
}
\layout {
\context { \Score
\override PaperColumn #'keep-inside-line = ##t
\override NonMusicalPaperColumn #'keep-inside-line = ##t
}
}
% NR 1.1 Pitches
% L. v. Beethoven
% Piano sonata 21 - Dem Grafen von Waldstein Gewidmet
% chorale at measures 34 - 40+
\new PianoStaff <<
% RH Staff
\new Staff <<
% RH Voice 1
\new Voice {
\set Score.currentBarNumber = #34
\voiceOne
gs''2 ( ^ \markup \italic { dolce e molto ligato }
fs''4
e''4
|
ds''2
cs''2 )
|
ds''2 (
e''4
fs''4
|
<gs'' e''>2
<fs'' ds''>2 )
|
\oneVoice
\clef bass
<gs' e' b>2 (
<fs' ds' a>4
<e' cs' gs>4
|
<ds' bs fs>2
<cs' a e>2 )
|
\voiceOne
b2 %(
cs'4
ds'4
|
\clef treble
<e' gs>4 %)
r4 r2
}
% RH Voice 2
\new Voice {
\voiceTwo
\override Staff.DynamicLineSpanner #'staff-padding = #2.5
<e'' b'>2 \p
<ds'' a'>4
<cs'' gs'>4
|
<bs' fs'>2
e'2
|
\once \override TextScript #'staff-padding = #2.5
<b'! a'>2 _ \markup \italic { cresc. }
b'4
<e'' cs''>4
|
b'2. ( \sf \>
a'4 )
\clef bass
| \break
s1 \p
|
s1
|
<gs e>4 (
<a fs>2. )
|
s4
r4 r2
}
>>
% LH Staff
\new Staff {
\override Staff.SustainPedalLineSpanner #'staff-padding = #5
<gs' e'>2 ( \sustainOn
<fs' ds' b>4 \sustainOff
<e' cs'>4
|
<ds' bs gs>2
<cs' a>2 ) \sustainOn
|
\clef bass
\slurDown
<ds' b! a fs>2 ( \sustainOff
<e' b gs>4
<fs' cs' a>4 \sustainOn
|
\clef treble
\voiceOne
<<
{
<gs' e'>2
<fs' ds'>2 )
}
\new Voice {
\voiceTwo
b1 \sustainOff
}
>>
\oneVoice
|
%\break
\clef bass
<gs e>2 (
<fs ds b,>4
<e cs>4
|
<ds bs, gs,>2
<cs a,>2 ) \sustainOn
|
<b,! b,,!>1 ( \sustainOff
|
<e e,>4 )
r4 r2
}
>>
% ****************************************************************
% end ly snippet
% ****************************************************************

View File

@ -1,6 +1,7 @@
import color, mode import color, mode
from lex import Grammar, PatternRule, RegionRule from lex import Grammar, PatternRule, RegionRule
from mode.scheme import SchemeGrammar from mode.scheme import SchemeGrammar
from mode.python import StringGrammar1, StringGrammar2
class CommentGrammar(Grammar): class CommentGrammar(Grammar):
rules = [PatternRule(r'data', r'(?:[^%]|%[^}])+')] rules = [PatternRule(r'data', r'(?:[^%]|%[^}])+')]
@ -10,13 +11,17 @@ class LilyGrammar(Grammar):
PatternRule(r'comment', r'%.*$'), PatternRule(r'comment', r'%.*$'),
RegionRule(r'comment', r'%\{', CommentGrammar, r'%\}'), RegionRule(r'comment', r'%\{', CommentGrammar, r'%\}'),
RegionRule(r'string', r'"', StringGrammar2, r'"'),
PatternRule(r'delimiter', r'(?:[=(){}\[\];:,.])'), PatternRule(r'delimiter', r'(?:[=(){}\[\];:,.])'),
PatternRule(r'note', r'[a-g'), PatternRule(r'note', r"[a-g][sf]?[',]*(?![a-z-])"),
PatternRule(r'measure', r'(?:[0-9]+\.)?[0-9]+\\(?:mm|cm|in)'),
RegionRule(r'scheme', r'#\(', SchemeGrammar, '\)'), RegionRule(r'scheme', r'#\(', SchemeGrammar, '\)'),
PatternRule(r'directive', r'\\[a-zA-Z_][a-zA-Z_0-9]*'), PatternRule(r'directive', r'\\[a-zA-Z_][a-zA-Z_0-9]*'),
PatternRule(r'bareword', r'[a-zA-Z_][a-zA-Z_0-9]*'), PatternRule(r'bareword', r'[a-zA-Z][a-zA-Z_0-9-]*[a-zA-Z0-9]'),
] ]
class Lily(mode.Fundamental): class Lily(mode.Fundamental):
@ -24,7 +29,13 @@ class Lily(mode.Fundamental):
extensions = ['.ly'] extensions = ['.ly']
grammar = LilyGrammar grammar = LilyGrammar
commentc = '%' commentc = '%'
colors = {} colors = {
'note': ('yellow', 'default'),
'directive': ('cyan', 'default'),
'scheme.start': ('magenta', 'default'),
'scheme.end': ('magenta', 'default'),
'measure': ('green', 'default'),
}
opentokens = ('delimiter',) opentokens = ('delimiter',)
opentags = {'(': ')', '[': ']', '{': '}'} opentags = {'(': ')', '[': ']', '{': '}'}
closetokens = ('delimiter',) closetokens = ('delimiter',)