% This is a file to test the Lilypond highlighting features of Katepart.
% This is NOT a valid lilypond file, because it also shows the
% highlighting of some invalid lilypond constructs!
% This is a line comment.

%{
this is a block comment, that can occur inside a line, or across
multiple lines.
%}

\header {
title = "Katepart Lilypond syntax highlighting test file"
composer = %{"Wilbert Berendsen"%} "Anonymus"
poet = "The KDE team"
opus = "1"
copyright = "Share and enjoy!"
}

\paper {
#(set-paper-size "a4") % a hash introduces scheme
indent = 0 % recognize variable names inside \paper, \layout etc.
between-system-space = 3\mm
}

\layout {
\context {
\Score
\remove Bar_number_engraver % recognize engraver names
\remove "Bar_number_engraver" % also when quoted!
}
}

% { and << block are folded
\score {
\new StaffGroup <<
\new ChordNames \chordmode { c2sus4/f g2/d c1 }
\new Staff \new Voice ="mel" {
\key f \major
\time 4/4
\partial 4
\set Staff.instrumentName = "Bla."
\once \override Staff.NoteHead #'color = #red
% dynamics, articulations and markup
c8\p d\< e-. f-> g a\f c-5\markup {Hoi}
\notemode { c d e f }
\repeat volta 2 {
% complex durations are highlighted:
g4*2/3
}
\times 2/3 {e8 f g}
% there is some error checking:
% often made mistake to have octavemarks after the duration:
c2'
% invalid durations are caught:
g3
}
\context Lyrics \lyricsto "mel" {
\set fontSize = #1
this is a line of ly -- rics.
with4 dur -- a -- tions.2.
% errors like forgetting spaces are found:
space-- flight %{i.s.o.%} space -- flight
space at end for -- got -- ten as well.}

\new DrumStaff \drummode { hihat4 bassdrum8 }
\new FiguredBass \figuremode {
<5 4>8 <6->
}
>>
\midi {
\context {
\Score
tempoWholesPerMinute = #(ly:make-moment 60 2)
}
}
}

av = #(define-music-function (parser location voice)
(string?)
; scheme comments are recognized in scheme
; Lilypond inside scheme works as well:
#{
\set associatedVoice = $voice
#})




% inside scheme some elements are highlighted:
#(define (naturalise-pitch p)
(let* ((o (ly:pitch-octave p))
(a (* 4 (ly:pitch-alteration p)))
(n (ly:pitch-notename p)))
(bla 'ArticulationEvent 'ChoirStaff)
(cond
((> a 2) (set! a (- a 4)) (set! n (+ n 1)))
((< a -2) (set! a (+ a 4)) (set! n (- n 1))))

(if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7))))
(if (> n 6) (begin (set! o (+ o 1)) (set! n (- n 7))))

(ly:make-pitch o n (/ a 4))))

% markup is also highlighted
\markup {
\line {
text test Voice Staff % note Lilypond keywords are not highlighted here
}
\score { \relative c' { <ceg>2( d) } }
\italic bla
\override #'(baseline-skip . 2) {
\underline blu
}
}