From: David Kastrup Date: Mon, 26 Nov 2012 10:54:38 +0000 (+0100) Subject: Remove "selective" contextmods. X-Git-Tag: release/2.17.9-1~19 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=6f14bc3f06c15ead9443df0e284eb87ed34c4fec;p=lilypond.git Remove "selective" contextmods. This reverts those parts of commit 70365334614c31a82e9a3860c9eb9334cdc2879a that have been responsible for allowing context-mods to contain modifications restricted to certain context types. It also removes use of this feature from context-mod-from-music which is used for harvesting music into context modifications. As a result, any overrides in music used inside of context mods are interpreted without looking at their actually targeted contexts. It turned out that this "feature" offered more confusion than benefits. --- diff --git a/lily/context-property.cc b/lily/context-property.cc index 1ccfe5a970..0c5e1ec55d 100644 --- a/lily/context-property.cc +++ b/lily/context-property.cc @@ -230,33 +230,25 @@ apply_property_operations (Context *tg, SCM pre_init_ops) SCM entry = scm_car (s); SCM type = scm_car (entry); entry = scm_cdr (entry); - if (!scm_is_pair (entry)) - continue; - SCM context_prop = scm_car (entry); - if (scm_is_pair (context_prop)) - { - if (tg->is_alias (scm_car (context_prop))) - context_prop = scm_cdr (context_prop); - else - continue; - } if (type == ly_symbol2scm ("push")) { + SCM context_prop = scm_car (entry); SCM val = scm_cadr (entry); SCM grob_prop_path = scm_cddr (entry); sloppy_general_pushpop_property (tg, context_prop, grob_prop_path, val); } else if (type == ly_symbol2scm ("pop")) { + SCM context_prop = scm_car (entry); SCM val = SCM_UNDEFINED; SCM grob_prop_path = scm_cdr (entry); sloppy_general_pushpop_property (tg, context_prop, grob_prop_path, val); } else if (type == ly_symbol2scm ("assign")) - tg->set_property (context_prop, scm_cadr (entry)); + tg->set_property (scm_car (entry), scm_cadr (entry)); else if (type == ly_symbol2scm ("apply")) - scm_apply_1 (context_prop, tg->self_scm (), scm_cdr (entry)); + scm_apply_1 (scm_car (entry), tg->self_scm (), scm_cdr (entry)); } } diff --git a/scm/lily-library.scm b/scm/lily-library.scm index 854980012c..d21e292ccf 100644 --- a/scm/lily-library.scm +++ b/scm/lily-library.scm @@ -259,9 +259,9 @@ bookoutput function" (define-public (context-mod-from-music parser music) (let ((warn #t) (mods (ly:make-context-mod))) - (let loop ((m music) (context #f)) + (let loop ((m music)) (if (music-is-of-type? m 'layout-instruction-event) - (let ((symbol (cons context (ly:music-property m 'symbol)))) + (let ((symbol (ly:music-property m 'symbol))) (ly:add-context-mod mods (case (ly:music-property m 'name) @@ -292,19 +292,17 @@ bookoutput function" (list 'apply (ly:music-property m 'procedure)))) ((ContextSpeccedMusic) - (loop (ly:music-property m 'element) - (ly:music-property m 'context-type))) + (loop (ly:music-property m 'element))) (else (let ((callback (ly:music-property m 'elements-callback))) (if (procedure? callback) - (fold loop context (callback m)) + (for-each loop (callback m)) (if (and warn (ly:duration? (ly:music-property m 'duration))) (begin (ly:music-warning music (_ "Music unsuitable for context-mod")) - (set! warn #f)))))))) - context) + (set! warn #f))))))))) mods)) (define-public (context-defs-from-music parser output-def music)