X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=input%2Fregression%2Fscheme-engraver-instance.ly;fp=input%2Fregression%2Fscheme-engraver-instance.ly;h=4136171a102b551a970acbafe48957593f704f76;hb=941dff9d2a67080e0dd8474f1e70f0c72ace6424;hp=0000000000000000000000000000000000000000;hpb=5a22d6233a39d3164e1ca043244794c268be4ad0;p=lilypond.git diff --git a/input/regression/scheme-engraver-instance.ly b/input/regression/scheme-engraver-instance.ly new file mode 100644 index 0000000000..4136171a10 --- /dev/null +++ b/input/regression/scheme-engraver-instance.ly @@ -0,0 +1,36 @@ +\header { + + texidoc = "Scheme engravers may be instantiated, with + instance-scoped slots, by defining a 1 argument procedure which + shall return the engraver definition as an alist, with the private + slots defined in a closure. The argument procedure argument is the + context where the engraver is instantiated." + +} + +\version "2.14.0" + +\layout { + \context { + \Voice + \consists + #(let ((instance-counter 0)) + (lambda (context) + (set! instance-counter (1+ instance-counter)) + (let ((instance-id instance-counter) + (private-note-counter 0)) + `((listeners + (note-event + . ,(lambda (engraver event) + (set! private-note-counter (1+ private-note-counter)) + (let ((text (ly:engraver-make-grob engraver 'TextScript event))) + (ly:grob-set-property! text 'text + (format "~a.~a" instance-id + private-note-counter)))))))))) + } +} + +<< + \relative c'' { c4 d e f } + \\ \relative c' { c4 d e f } +>> \ No newline at end of file