From 7f036b491133b9c81befa8e6279c53f9eae698b4 Mon Sep 17 00:00:00 2001 From: Reinhold Kainhofer Date: Wed, 19 Aug 2009 14:08:44 +0200 Subject: [PATCH] Use proper score/book handler so scores inside a book work automatically Thanks to Nicolas Sceaux! --- orchestrallily.ily | 57 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/orchestrallily.ily b/orchestrallily.ily index 90aff59..8c92b52 100644 --- a/orchestrallily.ily +++ b/orchestrallily.ily @@ -601,23 +601,48 @@ orchestralVoiceTypes = #(define-music-function (parser location types) (list?) % \setUseBook ##t/##f sets a flag to determine whether the calls to createScore % are from within a book block or not % #(define oly:score_handler collect-scores-for-book) -#(define oly:score_handler toplevel-score-handler) -#(define oly:music_handler toplevel-music-handler) -#(define oly:text_handler toplevel-text-handler) - +% #(define oly:score_handler toplevel-score-handler) +% #(define oly:music_handler toplevel-music-handler) +% #(define oly:text_handler toplevel-text-handler) + +% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#(define-public (add-score parser score) + (ly:parser-define! parser 'toplevel-scores + (cons score (ly:parser-lookup parser 'toplevel-scores)))) + +#(define-public (add-text parser text) + (add-score parser (list text))) + +#(define-public (add-music parser music) + (collect-music-aux (lambda (score) + (add-score parser score)) + parser + music)) + +#(define-public (toplevel-book-handler parser book) + (map (lambda (score) + (ly:book-add-score! book score)) + (reverse! (ly:parser-lookup parser 'toplevel-scores))) + (ly:parser-define! parser 'toplevel-scores (list)) + (print-book-with-defaults parser book)) + +#(define-public (book-score-handler book score) + (add-score parser score)) + +#(define-public (book-text-handler book text) + (add-text parser text)) + +#(define-public (book-music-handler parser book music) + (add-music parser music)) + +#(define oly:score_handler add-score) +#(define oly:music_handler add-music) +#(define oly:text_handler add-text) +% ~~~~~~~~~~~~~~~~~~ + +% TODO: deprecate setUseBook = #(define-music-function (parser location usebook) (boolean?) - (if usebook - (begin - (set! oly:score_handler book-score-handler) - (set! oly:music_handler book-music-handler) - (set! oly:text_handler book-text-handler) - ) - (begin - (set! oly:score_handler toplevel-score-handler) - (set! oly:music_handler toplevel-music-handler) - (set! oly:text_handler toplevel-text-handler) - ) - ) + (ly:warning "\\setUseBook has been deprecated! Books are now automatically handled without any hacks") (make-music 'Music 'void #t) ) -- 2.11.4.GIT