On Sat, Dec 8, 2012 at 7:21 PM, David Nalesnik <david.nales...@gmail.com> wrote:
[...] > > Trying to work out the problem, I've done a little rewriting so I'll > include the engraver here. You can just substitute this in the > problematic file. > Well, I did break something. Here's the fix: frameEngraver = #(lambda (context) (let ((span '()) (stub '()) (event-drul (cons '() '()))) (make-engraver (listeners ((frame-event engraver event) (if (= START (ly:event-property event 'span-direction)) (set-car! event-drul event) (begin (set-cdr! event-drul event) (set-car! event-drul '()))))) (acknowledgers ((note-column-interface engraver grob source-engraver) (if (ly:spanner? span) (begin (ly:pointer-group-interface::add-grob span 'elements grob) (add-bound-item span grob))) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((script-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((dynamic-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((inline-accidental-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob)))) ((process-music trans) (if (ly:stream-event? (car event-drul)) (begin (set! span (ly:engraver-make-grob trans 'Frame (car event-drul))) (set! stub (ly:engraver-make-grob trans 'FrameStub (car event-drul))) (ly:grob-set-object! stub 'frame span) (ly:grob-set-property! stub 'direction LEFT) (set-car! event-drul '()))) (if (ly:stream-event? (cdr event-drul)) (if (null? span) (ly:warning "No start to this box.") (begin (set! stub (ly:engraver-make-grob trans 'FrameStub (cdr event-drul))) (ly:grob-set-property! stub 'direction RIGHT) (ly:grob-set-object! stub 'frame span) (ly:engraver-announce-end-grob trans span (cdr event-drul)))))) ((stop-translation-timestep trans) (if (ly:stream-event? (cdr event-drul)) (begin (set! span '()) (set-cdr! event-drul '()))) (set! stub '()))))) _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel