X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fpart-combiner.scm;h=ddaa17033fc8a9540651efd31306eeaef2e688f6;hb=98797fc60f299f8e84d9719cef45c2db4131532b;hp=a444313f6617f1d385580e8cd76905b1041b8eb7;hpb=77937d2cc4905b92803e18fb69ee315f5f8c562b;p=lilypond.git diff --git a/scm/part-combiner.scm b/scm/part-combiner.scm index a444313f66..ddaa17033f 100644 --- a/scm/part-combiner.scm +++ b/scm/part-combiner.scm @@ -2,7 +2,7 @@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; -;;;; (c) 2004--2006 Han-Wen Nienhuys +;;;; (c) 2004--2008 Han-Wen Nienhuys ;; todo: figure out how to make module, ;; without breaking nested ly scopes @@ -220,30 +220,20 @@ Voice-state objects (ly:interpret-music-expression (make-non-relative-music music) global) context-list)) -(define noticed '()) -;; todo: junk this, extract $defaultlayout from parser instead -(define part-combine-listener '()) - -; UGH - should pass noticed setter to part-combine-listener -(define-safe-public (set-part-combine-listener x) - (set! part-combine-listener x)) - -(define-public (notice-the-events-for-pc context lst) - "add CONTEXT-ID, EVENT list to NOTICED variable." - - (set! noticed (acons (ly:context-id context) lst noticed))) - -(define-public (make-part-combine-music music-list) +(define-public (make-part-combine-music parser music-list) (let* ((m (make-music 'PartCombineMusic)) (m1 (make-non-relative-music (context-spec-music (first music-list) 'Voice "one"))) (m2 (make-non-relative-music (context-spec-music (second music-list) 'Voice "two"))) - (evs2 (recording-group-emulate m2 part-combine-listener)) - (evs1 (recording-group-emulate m1 part-combine-listener))) + (listener (ly:parser-lookup parser 'partCombineListener)) + (evs2 (recording-group-emulate m2 listener)) + (evs1 (recording-group-emulate m1 listener))) (set! (ly:music-property m 'elements) (list m1 m2)) (set! (ly:music-property m 'split-list) - (determine-split-list (reverse! (cdr (assoc "one" evs1)) '()) - (reverse! (cdr (assoc "two" evs2)) '()))) + (if (and (assoc "one" evs1) (assoc "two" evs2)) + (determine-split-list (reverse! (cdr (assoc "one" evs1)) '()) + (reverse! (cdr (assoc "two" evs2)) '())) + '() )) m)) (define-public (determine-split-list evl1 evl2) @@ -495,11 +485,10 @@ the mark when there are no spanners active. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define-public (add-quotable name mus) - (set! noticed '()) +(define-public (add-quotable parser name mus) (let* ((tab (eval 'musicQuotes (current-module))) (context-list (recording-group-emulate (context-spec-music mus 'Voice) - part-combine-listener))) + (ly:parser-lookup parser 'partCombineListener)))) (if (pair? context-list) (hash-set! tab name ;; cdr : skip name string