From: David Kastrup Date: Tue, 13 Sep 2011 09:27:20 +0000 (+0200) Subject: Fix completely broken Scheme functions X-Git-Tag: release/2.15.12-1~50 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=02195cb553879f36f008c62588615822a007eabb;p=lilypond.git Fix completely broken Scheme functions --- diff --git a/scm/ly-syntax-constructors.scm b/scm/ly-syntax-constructors.scm index 4dbf5b1d34..6d0290d5f5 100644 --- a/scm/ly-syntax-constructors.scm +++ b/scm/ly-syntax-constructors.scm @@ -43,13 +43,15 @@ m))) ;; Music function: Apply function and check return value. -(define-ly-syntax-loc (music-function parser loc pred fun args) +(define-ly-syntax (music-function parser loc pred 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)) + (make-music 'Music 'origin loc)) (else (ly:parser-error parser (format #f (_ "Scheme function must return ~a object") (type-name pred)) diff --git a/scm/music-functions.scm b/scm/music-functions.scm index 661d73e409..1d88c4f0db 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -792,7 +792,7 @@ Syntax: (define-scheme-function (parser location arg1 arg2 ...) (arg1-type? arg2-type? ...) ...function body...) " - `(define-syntax-function ly:scheme? ,@rest)) + `(define-syntax-function scheme? ,@rest)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;