From: Devon Schudy Date: Sun, 24 Nov 2013 03:39:50 +0000 (-0500) Subject: Support properties on articulations. X-Git-Tag: release/2.19.0-1~106 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=6baa453;p=lilypond.git Support properties on articulations. Shorthand articulations like -. can now be ArticulationEvents, not just articulation names. Previously a shorthand created a new ArticulationEvent with its name, so there was no way to give it properties. Now it can be (and is, by default) an ArticulationEvent. Note that redefining a shorthand to a string (e.g. dashDot = "staccatissimo") still creates propertyless articulations, regardless of \staccatissimo. --- diff --git a/lily/parser.yy b/lily/parser.yy index e8fec3de2a..1c8e527b4e 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -2814,11 +2814,18 @@ direction_reqd_event: } | script_abbreviation { SCM s = parser->lexer_->lookup_identifier ("dash" + ly_scm2string ($1)); - Music *a = MY_MAKE_MUSIC ("ArticulationEvent", @$); - if (scm_is_string (s)) + if (scm_is_string (s)) { + Music *a = MY_MAKE_MUSIC ("ArticulationEvent", @$); a->set_property ("articulation-type", s); - else parser->parser_error (@1, _ ("expecting string as script definition")); - $$ = a->unprotect (); + $$ = a->unprotect (); + } else if (ly_prob_type_p (s, ly_symbol2scm ("ArticulationEvent"))) { + $$ = s; + if (Music *original = unsmob_music (s)) { + Music *a = original->clone (); + a->set_spot (parser->lexer_->override_input (@$)); + $$ = a->unprotect (); + } + } else parser->parser_error (@1, _ ("expecting string or ArticulationEvent as script definition")); } ; diff --git a/ly/script-init.ly b/ly/script-init.ly index 0cb37947e7..89c1f5802b 100644 --- a/ly/script-init.ly +++ b/ly/script-init.ly @@ -2,15 +2,6 @@ \version "2.17.25" -% code char abbreviations -dashHat = "marcato" -dashPlus = "stopped" -dashDash = "tenuto" -dashBang = "staccatissimo" -dashLarger = "accent" -dashDot = "staccato" -dashUnderscore = "portato" - harmonic = #(make-music 'HarmonicEvent) accent = #(make-articulation "accent") @@ -55,3 +46,12 @@ upmordent = #(make-articulation "upmordent") upprall = #(make-articulation "upprall") varcoda = #(make-articulation "varcoda") verylongfermata = #(make-articulation "verylongfermata") + +% code char abbreviations +dashHat = \marcato +dashPlus = \stopped +dashDash = \tenuto +dashBang = \staccatissimo +dashLarger = \accent +dashDot = \staccato +dashUnderscore = \portato diff --git a/scm/music-functions.scm b/scm/music-functions.scm index a5aa02fdd1..9bf47d408e 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -637,9 +637,10 @@ in @var{grob}." (make-music 'PropertyUnset 'symbol sym)) -(define-safe-public (make-articulation name) - (make-music 'ArticulationEvent - 'articulation-type name)) +(define-safe-public (make-articulation name . properties) + (apply make-music 'ArticulationEvent + 'articulation-type name + properties)) (define-public (make-lyric-event string duration) (make-music 'LyricEvent