X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fly-syntax-constructors.scm;h=8eefe63b714fd0cb3944a5dd38e5b083d500a38f;hb=ff43f4eb0029d2698f2f98adf7930b96365090e5;hp=cfdee35a3bed93f3e14264d57efb739c94c15cef;hpb=9e69cb84d6ee5b0a861cd97869b10e3bdf0c833c;p=lilypond.git diff --git a/scm/ly-syntax-constructors.scm b/scm/ly-syntax-constructors.scm index cfdee35a3b..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) @@ -130,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