]> git.donarmstrong.com Git - lilypond.git/commitdiff
Remove "selective" contextmods.
authorDavid Kastrup <dak@gnu.org>
Mon, 26 Nov 2012 10:54:38 +0000 (11:54 +0100)
committerDavid Kastrup <dak@gnu.org>
Tue, 4 Dec 2012 08:01:54 +0000 (09:01 +0100)
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.

lily/context-property.cc
scm/lily-library.scm

index 1ccfe5a970973e7ce3be409406985dcafd0e42f7..0c5e1ec55d689850efeeaf7eef209c4d2c4c3f32 100644 (file)
@@ -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));
     }
 }
 
index 854980012cea5d3da40df5b955bfde86c4e87a97..d21e292ccf2b7f2ecc97856da3895aa182dd3d8f 100644 (file)
@@ -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)