]> git.donarmstrong.com Git - lilypond.git/blob - input/regression/scheme-engraver-instance.ly
Add newlines at EOF where appropriate.
[lilypond.git] / input / regression / scheme-engraver-instance.ly
1 \header {
2
3   texidoc = "Scheme engravers may be instantiated, with
4   instance-scoped slots, by defining a 1 argument procedure which
5   shall return the engraver definition as an alist, with the private
6   slots defined in a closure.  The argument procedure argument is the
7   context where the engraver is instantiated."
8
9 }
10
11 \version "2.14.0"
12
13 \layout {
14   \context {
15     \Voice
16     \consists
17     #(let ((instance-counter 0))
18        (lambda (context)
19          (set! instance-counter (1+ instance-counter))
20          (let ((instance-id instance-counter)
21                (private-note-counter 0))
22            `((listeners
23               (note-event
24                . ,(lambda (engraver event)
25                     (set! private-note-counter (1+ private-note-counter))
26                     (let ((text (ly:engraver-make-grob engraver 'TextScript event)))
27                       (ly:grob-set-property! text 'text
28                                              (format #f "~a.~a" instance-id
29                                                      private-note-counter))))))))))
30   }
31 }
32
33 <<
34   \relative c'' { c4 d e f }
35   \\ \relative c' { c4 d e f }
36 >>