]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/ly-syntax-constructors.scm
Issue 4487/3: Implement partial markups
[lilypond.git] / scm / ly-syntax-constructors.scm
index b617f72764eaa5a44e1af6414a5db2eea63a8116..a0d35ae92e31b175309f2a7e00089aed0ae4b121 100644 (file)
@@ -198,6 +198,19 @@ into a @code{MultiMeasureTextEvent}."
                       (make-map-markup-commands-markup-list
                        compose complex) completed))))))))
 
+(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)
+    (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?))
+    chain))
+
 (define-public (property-operation ctx music-type symbol . args)
   (let* ((props (case music-type
                   ((PropertySet) (list 'value (car args)))