]> git.donarmstrong.com Git - lilypond.git/blobdiff - input/regression/scheme-text-spanner.ly
Remove unused music type general-music
[lilypond.git] / input / regression / scheme-text-spanner.ly
index f89dcc2c0d1f91ed352a31798c6859a089b8830d..2fc7949e2986c2fd3e92094042a6bb7fa11aa50a 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.13.36"
+\version "2.19.12"
 
 \header {
   texidoc = "Use @code{define-event-class}, scheme engraver methods,
@@ -6,17 +6,13 @@ and grob creation methods to create a fully functional text spanner
 in scheme."
 }
 
-#(define-event-class 'scheme-text-span-event
-   '(scheme-text-span-event
-     span-event
-     music-event
-     StreamEvent))
+#(define-event-class 'scheme-text-span-event 'span-event)
 
 #(define (add-grob-definition grob-name grob-entry)
    (let* ((meta-entry   (assoc-get 'meta grob-entry))
           (class        (assoc-get 'class meta-entry))
           (ifaces-entry (assoc-get 'interfaces meta-entry)))
-     (set-object-property! grob-name 'translation-type? list?)
+     (set-object-property! grob-name 'translation-type? ly:grob-properties?)
      (set-object-property! grob-name 'is-grob? #t)
      (set! ifaces-entry (append (case class
                                   ((Item) '(item-interface))
@@ -64,6 +60,7 @@ in scheme."
              (interfaces . (font-interface
                             line-interface
                             line-spanner-interface
+                            outside-staff-interface
                             side-position-interface))))))
 
 #(define scheme-event-spanner-types
@@ -71,7 +68,7 @@ in scheme."
      (SchemeTextSpanEvent
       . ((description . "Used to signal where scheme text spanner brackets
 start and stop.")
-         (types . (general-music scheme-text-span-event span-event event))
+         (types . (scheme-text-span-event span-event event))
          ))
      ))
 
@@ -110,73 +107,66 @@ start and stop.")
          grob
          (if (eq? axis X)
              ly:side-position-interface::x-aligned-side
-             ly:side-position-interface::y-aligned-side)
+             side-position-interface::y-aligned-side)
          (axis-offset-symbol axis)))))
 
 schemeTextSpannerEngraver =
 #(lambda (context)
    (let ((span '())
          (finished '())
-         (current-event '())
-         (event-drul '(() . ())))
-     (list (cons 'listeners
-                 (list (cons 'scheme-text-span-event
-                             (lambda (engraver event)
-                               (if (= START (ly:event-property event 'span-direction))
-                                   (set-car! event-drul event)
-                                   (set-cdr! event-drul event))))))
-           (cons 'acknowledgers
-                 (list (cons 'note-column-interface
-                             (lambda (engraver grob source-engraver)
-                               (if (ly:spanner? span)
-                                   (begin
-                                     (ly:pointer-group-interface::add-grob span 'note-columns grob)
-                                     (add-bound-item span grob)))
-                               (if (ly:spanner? finished)
-                                   (begin
-                                     (ly:pointer-group-interface::add-grob finished 'note-columns grob)
-                                     (add-bound-item finished grob)))))))
-           (cons 'process-music
-                 (lambda (trans)
-                   (if (ly:stream-event? (cdr event-drul))
-                       (if (null? span)
-                           (ly:warning "You're trying to end a scheme text spanner but you haven't started one.")
-                           (begin (set! finished span)
-                                  (ly:engraver-announce-end-grob trans finished current-event)
-                                  (set! span '())
-                                  (set! current-event '())
-                                  (set-cdr! event-drul '()))))
-                   (if (ly:stream-event? (car event-drul))
-                       (begin (set! current-event (car event-drul))
-                              (set! span (ly:engraver-make-grob trans 'SchemeTextSpanner current-event))
-                              (set-axis! span Y)
-                              (set-car! event-drul '())))))
-           (cons 'stop-translation-timestep
-                 (lambda (trans)
-                   (if (and (ly:spanner? span)
-                            (null? (ly:spanner-bound span LEFT)))
-                       (set! (ly:spanner-bound span LEFT)
-                             (ly:context-property context 'currentMusicalColumn)))
-                   (if (ly:spanner? finished)
-                       (begin
-                         (if (null? (ly:spanner-bound finished RIGHT))
-                             (set! (ly:spanner-bound finished RIGHT)
-                                   (ly:context-property context 'currentMusicalColumn)))
-                         (set! finished '())
-                         (set! event-drul '(() . ()))))))
-           (cons 'finalize
-                 (lambda (trans)
-                   (if (ly:spanner? finished)
-                       (begin
-                         (if (null? (ly:spanner-bound finished RIGHT))
-                             (set! (ly:spanner-bound finished RIGHT)
-                                   (ly:context-property context 'currentMusicalColumn)))
-                         (set! finished '())))
-                   (if (ly:spanner? span)
-                       (begin
-                         (ly:warning "I think there's a dangling scheme text spanner :-(")
-                         (ly:grob-suicide! span)
-                         (set! span '()))))))))
+         (event-start '())
+         (event-stop '()))
+     (make-engraver
+      (listeners ((scheme-text-span-event engraver event)
+                  (if (= START (ly:event-property event 'span-direction))
+                      (set! event-start event)
+                      (set! event-stop event))))
+      (acknowledgers ((note-column-interface engraver grob source-engraver)
+                      (if (ly:spanner? span)
+                          (begin
+                            (ly:pointer-group-interface::add-grob span 'note-columns grob)
+                            (add-bound-item span grob)))
+                      (if (ly:spanner? finished)
+                          (begin
+                            (ly:pointer-group-interface::add-grob finished 'note-columns grob)
+                            (add-bound-item finished grob)))))
+      ((process-music trans)
+       (if (ly:stream-event? event-stop)
+           (if (null? span)
+               (ly:warning "You're trying to end a scheme text spanner but you haven't started one.")
+               (begin (set! finished span)
+                      (ly:engraver-announce-end-grob trans finished event-start)
+                      (set! span '())
+                      (set! event-stop '()))))
+       (if (ly:stream-event? event-start)
+           (begin (set! span (ly:engraver-make-grob trans 'SchemeTextSpanner event-start))
+                  (set-axis! span Y)
+                  (set! event-start '()))))
+      ((stop-translation-timestep trans)
+       (if (and (ly:spanner? span)
+                (null? (ly:spanner-bound span LEFT)))
+           (ly:spanner-set-bound! span LEFT
+             (ly:context-property context 'currentMusicalColumn)))
+       (if (ly:spanner? finished)
+           (begin
+             (if (null? (ly:spanner-bound finished RIGHT))
+                 (ly:spanner-set-bound! finished RIGHT
+                   (ly:context-property context 'currentMusicalColumn)))
+             (set! finished '())
+             (set! event-start '())
+             (set! event-stop '()))))
+      ((finalize trans)
+       (if (ly:spanner? finished)
+           (begin
+             (if (null? (ly:spanner-bound finished RIGHT))
+                 (ly:spanner-set-bound! finished RIGHT
+                   (ly:context-property context 'currentMusicalColumn)))
+             (set! finished '())))
+       (if (ly:spanner? span)
+           (begin
+             (ly:warning "I think there's a dangling scheme text spanner :-(")
+             (ly:grob-suicide! span)
+            (set! span '())))))))
 
 schemeTextSpannerStart =
 #(make-span-event 'SchemeTextSpanEvent START)
@@ -199,7 +189,7 @@ schemeTextSpannerEnd =
   a4 b\schemeTextSpannerStart c d |
   \repeat unfold 20 { a4 b c d | }
   a4 b c\schemeTextSpannerEnd d |
-  \override SchemeTextSpanner #'to-barline = ##t
+  \override SchemeTextSpanner.to-barline = ##t
   a4\schemeTextSpannerStart b d c |
   \repeat unfold 20 { a4 b c d | }
   a1\schemeTextSpannerEnd |