(define-public (partial-markup commands)
;; Like composed-markup-list, except that the result is a single
;; markup command that can be applied to one markup
- (define (compose arg)
+ (define (compose rest)
(fold
(lambda (cmd prev) (append cmd (list prev)))
- arg
- commands))
- (let ((chain (lambda (layout props arg)
- (interpret-markup layout props (compose arg)))))
- (set-object-property! chain 'markup-signature (list markup?))
+ (append (car commands) rest)
+ (cdr commands)))
+ (let ((chain (lambda (layout props . rest)
+ (interpret-markup layout props (compose rest)))))
+ (set! (markup-command-signature chain)
+ (list-tail
+ (markup-command-signature (caar commands))
+ (length (cdar commands))))
chain))
(define-public (property-set context property value)
'origin (ly:music-property music 'origin))))
(voice-type (ly:music-property voice 'context-type))
(lyricstos (map
- (lambda (mus)
+ (lambda (mus+mods)
(with-location
- (ly:music-property mus 'origin)
+ (ly:music-property (car mus+mods) 'origin)
(ly:set-origin! (make-music 'ContextSpeccedMusic
'create-new #t
'context-type 'Lyrics
+ 'property-operations (cdr mus+mods)
'element
(lyric-combine
- voice-name voice-type mus)))))
+ voice-name voice-type
+ (car mus+mods))))))
addlyrics-list)))
(make-simultaneous-music (cons voice lyricstos))))