]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/parser.yy
Let fret-diagram scale markups to fit into dots
[lilypond.git] / lily / parser.yy
index 23c024e9b7e590c42327b4ab69f972a0e76309ac..87edcdafed7cc33c4cf48e4dc68c4998789e67dd 100644 (file)
@@ -719,11 +719,23 @@ partial_function:
        }
        | OVERRIDE grob_prop_path '='
        {
-               $$ = scm_acons (Lily::property_override, scm_list_1 ($2), SCM_EOL);
+               if (SCM_UNBNDP ($2))
+                       $$ = scm_list_1 (SCM_BOOL_F);
+               else
+                       $$ = scm_cons
+                               (scm_list_3 (Syntax::property_override_function,
+                                            scm_cdr ($2), scm_car ($2)),
+                                SCM_EOL);
        }
        | SET context_prop_spec '='
        {
-               $$ = scm_acons (Lily::property_set, scm_list_1 ($2), SCM_EOL);
+               if (SCM_UNBNDP ($2))
+                       $$ = scm_list_1 (SCM_BOOL_F);
+               else
+                       $$ = scm_cons
+                               (scm_list_3 (Syntax::property_set_function,
+                                            scm_cadr ($2), scm_car ($2)),
+                                SCM_EOL);
        }
        | MUSIC_FUNCTION EXPECT_SCM function_arglist_optional partial_function
        {
@@ -739,11 +751,23 @@ partial_function:
        }
        | OVERRIDE grob_prop_path '=' partial_function
        {
-               $$ = scm_acons (Lily::property_override, scm_list_1 ($2), $4);
+               if (SCM_UNBNDP ($2))
+                       $$ = scm_list_1 (SCM_BOOL_F);
+               else
+                       $$ = scm_cons
+                               (scm_list_3 (Syntax::property_override_function,
+                                            scm_cdr ($2), scm_car ($2)),
+                                $4);
        }
        | SET context_prop_spec '=' partial_function
        {
-               $$ = scm_acons (Lily::property_set, scm_list_1 ($2), $4);
+               if (SCM_UNBNDP ($2))
+                       $$ = scm_list_1 (SCM_BOOL_F);
+               else
+                       $$ = scm_cons
+                               (scm_list_3 (Syntax::property_set_function,
+                                            scm_cadr ($2), scm_car ($2)),
+                                $4);
        }
        | MUSIC_FUNCTION EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup partial_function
        {
@@ -1499,11 +1523,19 @@ context_prefix:
        ;
 
 new_lyrics:
-       ADDLYRICS lyric_mode_music {
-               $$ = scm_list_1 ($2);
+       ADDLYRICS optional_context_mod lyric_mode_music {
+               Context_mod *ctxmod = unsmob<Context_mod> ($2);
+               SCM mods = SCM_EOL;
+               if (ctxmod)
+                       mods = ctxmod->get_mods ();
+               $$ = scm_acons ($3, mods, SCM_EOL);
        }
-       | new_lyrics ADDLYRICS lyric_mode_music {
-               $$ = scm_cons ($3, $1);
+       | new_lyrics ADDLYRICS optional_context_mod lyric_mode_music {
+               Context_mod *ctxmod = unsmob<Context_mod> ($3);
+               SCM mods = SCM_EOL;
+               if (ctxmod)
+                       mods = ctxmod->get_mods ();
+               $$ = scm_acons ($4, mods, $1);
        }
        ;
 
@@ -2655,29 +2687,21 @@ music_property_def:
        OVERRIDE grob_prop_path '=' scalar {
                if (SCM_UNBNDP ($2))
                        $$ = MAKE_SYNTAX (void_music, @$);
-               else {
-                       $$ = MAKE_SYNTAX (property_operation, @$,
+               else
+                       $$ = MAKE_SYNTAX (property_override, @$,
                                          scm_car ($2),
-                                         ly_symbol2scm ("OverrideProperty"),
-                                         scm_cadr ($2),
-                                         $4,
-                                         scm_cddr ($2));
-               }
+                                         scm_cdr ($2),
+                                         $4);
        }
        | REVERT simple_revert_context revert_arg {
-               $$ = MAKE_SYNTAX (property_operation, @$,
-                                 $2,
-                                 ly_symbol2scm ("RevertProperty"),
-                                 scm_car ($3),
-                                 scm_cdr ($3));
+               $$ = MAKE_SYNTAX (property_revert, @$, $2, $3);
        }
        | SET context_prop_spec '=' scalar {
                if (SCM_UNBNDP ($2))
                        $$ = MAKE_SYNTAX (void_music, @$);
                else
-                       $$ = MAKE_SYNTAX (property_operation, @$,
+                       $$ = MAKE_SYNTAX (property_set, @$,
                                          scm_car ($2),
-                                         ly_symbol2scm ("PropertySet"),
                                          scm_cadr ($2),
                                          $4);
        }
@@ -2685,9 +2709,8 @@ music_property_def:
                if (SCM_UNBNDP ($2))
                        $$ = MAKE_SYNTAX (void_music, @$);
                else
-                       $$ = MAKE_SYNTAX (property_operation, @$,
+                       $$ = MAKE_SYNTAX (property_unset, @$,
                                          scm_car ($2),
-                                         ly_symbol2scm ("PropertyUnset"),
                                          scm_cadr ($2));
        }
        ;
@@ -4072,14 +4095,12 @@ make_duration (SCM d, int dots)
 SCM
 make_chord_step (SCM step_scm, Rational alter)
 {
-        int step = scm_to_int (step_scm);
+       Pitch m (0, scm_to_int (step_scm) - 1, alter);
 
-       if (step == 7)
-               alter += FLAT_ALTERATION;
+       // Notename/octave are normalized
+       if (m.get_notename () == 6)
+               m = m.transposed (Pitch (0, 0, FLAT_ALTERATION));
 
-       while (step < 0)
-               step += 7;
-       Pitch m ((step -1) / 7, (step - 1) % 7, alter);
        return m.smobbed_copy ();
 }