X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fly-syntax-constructors.scm;h=8eefe63b714fd0cb3944a5dd38e5b083d500a38f;hb=f78663a73e5c8a7293f912abc3688d3c448ea361;hp=23befc939e7b0605b556e465f4afed901cde5936;hpb=7dcae7597fae14ce5c4e2e7d50c2709d162b7332;p=lilypond.git diff --git a/scm/ly-syntax-constructors.scm b/scm/ly-syntax-constructors.scm index 23befc939e..8eefe63b71 100644 --- a/scm/ly-syntax-constructors.scm +++ b/scm/ly-syntax-constructors.scm @@ -1,4 +1,4 @@ -;;;; define-syntax.scm -- Defines functions for syntax expressions +;;;; ly-syntax-constructors.scm -- Defines functions for syntax expressions ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; @@ -78,15 +78,28 @@ (make-music 'TransposedMusic 'element (ly:music-transpose music pitch))) -(define-ly-syntax-simple (tempo duration tempo) +(define-ly-syntax-simple (tempo text duration tempo) + (let ((props (list + (make-property-set 'tempoWholesPerMinute + (ly:moment-mul (ly:make-moment tempo 1) + (ly:duration-length duration))) + (make-property-set 'tempoUnitDuration duration) + (make-property-set 'tempoUnitCount tempo)))) + (set! props (cons + (if text (make-property-set 'tempoText text) + (make-property-unset 'tempoText)) + props)) + (context-spec-music + (make-sequential-music props) + 'Score))) + +(define-ly-syntax-simple (tempoText text) (context-spec-music (make-sequential-music (list - (make-property-set 'tempoWholesPerMinute - (ly:moment-mul (ly:make-moment tempo 1) - (ly:duration-length duration))) - (make-property-set 'tempoUnitDuration duration) - (make-property-set 'tempoUnitCount tempo))) + (make-property-unset 'tempoUnitDuration) + (make-property-unset 'tempoUnitCount) + (make-property-set 'tempoText text))) 'Score)) (define-ly-syntax-simple (skip-music dur) @@ -98,10 +111,14 @@ (define (script-to-mmrest-text music) "Extract 'direction and 'text from SCRIPT-MUSIC, and transform MultiMeasureTextEvent" + (if (memq 'script-event (ly:music-property music 'types)) - (let ((dir (ly:music-property music 'direction)) - (p (make-music 'MultiMeasureTextEvent + (let* + ((dir (ly:music-property music 'direction)) + (tags (ly:music-property music 'tags)) + (p (make-music 'MultiMeasureTextEvent + 'tags tags 'text (ly:music-property music 'text)))) (if (ly:dir? dir) (set! (ly:music-property p 'direction) dir)) @@ -126,9 +143,14 @@ ((PropertySet) (list 'value (car args))) ((PropertyUnset) '()) ((OverrideProperty) (list 'grob-value (car args) - 'grob-property-path (cdr args) + 'grob-property-path (if (list? (cadr args)) + (cadr args) + (cdr args)) 'pop-first #t)) - ((RevertProperty) (list 'grob-property-path args)) + ((RevertProperty) + (if (list? (car args)) + (list 'grob-property-path (car args)) + (list 'grob-property-path args))) (else (ly:error (_ "Invalid property operation ~a") music-type)))) (oprops (if once (cons* 'once once props) props)) (m (apply make-music music-type