X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fly-syntax-constructors.scm;h=cd200fa2c28f41301e66fedbd0525de62ee1bab5;hb=5e43e71f2c4c0f90b9909a5b864491b494b9c10d;hp=0d37c0f766fad8b92d53203827d18b54077e2b34;hpb=d5a48e801bd400e47de34cdeb398fba3510d6940;p=lilypond.git diff --git a/scm/ly-syntax-constructors.scm b/scm/ly-syntax-constructors.scm index 0d37c0f766..cd200fa2c2 100644 --- a/scm/ly-syntax-constructors.scm +++ b/scm/ly-syntax-constructors.scm @@ -50,7 +50,7 @@ (if (ly:music? m) (ly:set-origin! m) m) (music-function-call-error fun m)) (and (pair? sigcar) - (if (ly:music (cdr sigcar)) + (if (ly:music? (cdr sigcar)) (ly:music-deep-copy (cdr sigcar) (*location*)) (cdr sigcar)))))) @@ -246,6 +246,25 @@ into a @code{MultiMeasureTextEvent}." 'grob-property-path (cdr path))) context))) +;; The signature here is slightly fishy since the "fallback return +;; value" is not actually music but #f. This used to be (void-music) +;; but triggered "Parsed object should be dead" warnings for music +;; objects outside of the current parser session/module. The called +;; functions always deliver music and are used from the parser in a +;; manner where only the last argument is provided from outside the +;; parser, and its predicate "scheme?" is always true. So the +;; fallback value will never get used and its improper type is no +;; issue. +(define-public property-override-function + (ly:make-music-function + (list (cons ly:music? #f) symbol? symbol-list? scheme?) + property-override)) + +(define-public property-set-function + (ly:make-music-function + (list (cons ly:music? #f) symbol? symbol? scheme?) + property-set)) + (define (get-first-context-id! mus) "Find the name of a ContextSpeccedMusic, possibly naming it" (let ((id (ly:music-property mus 'context-id)))