From: David Kastrup Date: Sun, 12 Jul 2015 16:16:58 +0000 (+0200) Subject: Issue 4505: Add partial \override and \set commands X-Git-Tag: release/2.19.25-1~44 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=66714074fd18d3483371c91441bf3f7df6a4cfb2;p=lilypond.git Issue 4505: Add partial \override and \set commands This allows \set and \override commands to be stopped short after their `=' sign in order to be used in the manner of partial music functions. --- diff --git a/lily/parser.yy b/lily/parser.yy index 552d699d25..6fb3a8708b 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -717,6 +717,26 @@ partial_function: { $$ = scm_acons ($1, $2, SCM_EOL); } + | OVERRIDE grob_prop_path '=' + { + 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 '=' + { + 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 { $$ = scm_acons ($1, $3, $4); @@ -729,6 +749,26 @@ partial_function: { $$ = scm_acons ($1, $3, $4); } + | OVERRIDE grob_prop_path '=' partial_function + { + 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 + { + 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 { $$ = scm_acons ($1, $4, $5);