X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fsong-util.scm;h=31cb1e8d48c2d35565127a0117d9d77e4ae0f0d7;hb=8659a99f233f5c4684292728e7ad4206669b35b0;hp=568b967ba6d16ef891b691c87774c81d2e6268a7;hpb=bab44018918beed5d01350fa6c4fed7dfffcf19c;p=lilypond.git diff --git a/scm/song-util.scm b/scm/song-util.scm index 568b967ba6..31cb1e8d48 100644 --- a/scm/song-util.scm +++ b/scm/song-util.scm @@ -77,15 +77,14 @@ (lambda (record) ((record-predicate ,record) record))) (set! ,$make-record (lambda* (#:key ,@slots) - ((record-constructor ,record) ,@(map car slots*)))) + ((record-constructor ,record) ,@(map car slots*)))) (set! ,$copy-record (lambda (record) - (,$make-record ,@(apply - append - (map (lambda (slot) - (list (symbol->keyword slot) - (list (make-symbol reader-format slot) 'record))) - (map car slots*)))))) + (,$make-record ,@(append-map + (lambda (slot) + (list (symbol->keyword slot) + (list (make-symbol reader-format slot) 'record))) + (map car slots*))))) ,@(map (lambda (s) `(set! ,(make-symbol reader-format (car s)) (record-accessor ,record (quote ,(car s))))) @@ -159,12 +158,13 @@ If it unsets the property, return @code{#f}." (define-public (music-elements music) "Return list of all @var{music}'s top-level children." (let ((elt (ly:music-property music 'element)) - (elts (append - (ly:music-property music 'articulations) - (ly:music-property music 'elements)))) - (if (not (null? elt)) - (cons elt elts) - elts))) + (elts (ly:music-property music 'elements)) + (arts (ly:music-property music 'articulations))) + (if (pair? arts) + (set! elts (append elts arts))) + (if (null? elt) + elts + (cons elt elts)))) (define-public (find-child music predicate) "Find the first node in @var{music} that satisfies @var{predicate}." @@ -192,9 +192,9 @@ If a non-boolean is returned, it is considered the material to recurse." (let* ((elt (car queue)) (stop (function elt))) (process-music (if (boolean? stop) - (if stop - (cdr queue) - (append (music-elements elt) (cdr queue))) - ((if (cheap-list? stop) append cons) - stop (cdr queue))))))) + (if stop + (cdr queue) + (append (music-elements elt) (cdr queue))) + ((if (cheap-list? stop) append cons) + stop (cdr queue))))))) (process-music (list music)))