]> git.donarmstrong.com Git - lilypond.git/blobdiff - input/regression/scheme-engraver-instance.ly
resolve merge
[lilypond.git] / input / regression / scheme-engraver-instance.ly
diff --git a/input/regression/scheme-engraver-instance.ly b/input/regression/scheme-engraver-instance.ly
new file mode 100644 (file)
index 0000000..4136171
--- /dev/null
@@ -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