]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/music-functions-init.ly
Implement \once as music function able to operate on complex stuff.
[lilypond.git] / ly / music-functions-init.ly
index 185ee7be382af797b8ebe2e432f6e6b18fa4d3d6..5dad573ac071c348d0d948d718f4110faf03f8fd 100644 (file)
@@ -578,6 +578,18 @@ octaveCheck =
    (make-music 'RelativeOctaveCheck
                'pitch pitch))
 
+once =
+#(define-music-function (parser location music) (ly:music?)
+   (_i "Set @code{once} to @code{#t} on all layout instruction events in @var{music}.")
+   (music-map
+    (lambda (m)
+      (cond ((music-is-of-type? m 'layout-instruction-event)
+            (set! (ly:music-property m 'once) #t))
+           ((ly:duration? (ly:music-property m 'duration))
+            (ly:music-warning m (_ "Cannot apply \\once to timed music"))))
+      m)
+    music))
+
 ottava =
 #(define-music-function (parser location octave) (integer?)
    (_i "Set the octavation.")