]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/ly-syntax-constructors.scm
Parts from the optional music argument patch to make define-event-function work
[lilypond.git] / scm / ly-syntax-constructors.scm
index 6d0290d5f5a228783359740cd8d258c3a4aeb69d..17736d4d5dd266d36b1ba7c94d4f8ef7e3c7f046 100644 (file)
        m)))
 
 ;; Music function: Apply function and check return value.
-(define-ly-syntax (music-function parser loc pred fun args)
+(define-ly-syntax (music-function parser loc pred default fun args)
   (let ((m (apply fun parser loc args)))
-    (if (ly:music? m)
-       (set! (ly:music-property m 'origin) loc))
     (if (pred m)
        m
-       (cond ((eq? pred ly:music?)
-              (ly:parser-error parser (_ "Music syntax function must return Music object") loc)
-              (make-music 'Music 'origin loc))
-             (else
-              (ly:parser-error parser
-                               (format #f (_ "Scheme function must return ~a object") (type-name pred))
-                               loc)
-              #f)))))
+       (begin
+         (ly:parser-error parser
+                          (format #f (_ "~a function can't return ~a")
+                                  (type-name pred) m)
+                          loc)
+         default))))
 
 (define-ly-syntax-simple (void-music)
   (make-music 'Music))