From: David Nalesnik Date: Tue, 23 Jul 2013 01:20:33 +0000 (-0500) Subject: Issue 3472: several fixes to input/regression/scheme-text-spanner.ly X-Git-Tag: release/2.17.24-1~16^2~12 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=8ce03468acafd39bf37cf11b7222121afb088c40;p=lilypond.git Issue 3472: several fixes to input/regression/scheme-text-spanner.ly * The file `input/regression/scheme-text-spanner.ly' assigns a constant pair to the variable `event-drul' and subsequently attempts to modify the pair. This can lead to scheme-text-spanners not appearing when requested in simultaneous contexts. This patch corrects the faulty usage, replacing `event-drul' with two variables `event-start' and `event-stop'. * The variable `current-event' is not necessary, and has been removed. * Tabs in the engraver definition have been replaced with spaces. Signed-off-by: David Kastrup --- diff --git a/input/regression/scheme-text-spanner.ly b/input/regression/scheme-text-spanner.ly index 309fdd6926..14e095e954 100644 --- a/input/regression/scheme-text-spanner.ly +++ b/input/regression/scheme-text-spanner.ly @@ -113,59 +113,58 @@ schemeTextSpannerEngraver = #(lambda (context) (let ((span '()) (finished '()) - (current-event '()) - (event-drul '(() . ()))) + (event-start '()) + (event-stop '())) (make-engraver (listeners ((scheme-text-span-event engraver event) - (if (= START (ly:event-property event 'span-direction)) - (set-car! event-drul event) - (set-cdr! event-drul 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))))) + (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? (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 '())))) + (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))) - (set! (ly:spanner-bound span LEFT) - (ly:context-property context 'currentMusicalColumn))) + (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 '(() . ()))))) + (begin + (if (null? (ly:spanner-bound finished RIGHT)) + (set! (ly:spanner-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)) - (set! (ly:spanner-bound finished RIGHT) - (ly:context-property context 'currentMusicalColumn))) - (set! 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) + (begin + (ly:warning "I think there's a dangling scheme text spanner :-(") + (ly:grob-suicide! span) (set! span '()))))))) schemeTextSpannerStart =