]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/define-music-display-methods.scm
Issue 4609/5: Let \displayLilyMusic heed \once \unset and \once \revert
[lilypond.git] / scm / define-music-display-methods.scm
index 8708cc1d73a950627947f0cb52477333d0b6af61..10aecbd1db6794f29b3ee54f9cb99bdef23e47b4 100644 (file)
@@ -126,8 +126,7 @@ expression."
 ;;; post events
 ;;;
 
-(define (post-event? m)
-  (music-is-of-type? m 'post-event))
+(define post-event? (music-type-predicate 'post-event))
 
 (define* (event-direction->lily-string event #:optional (required #t))
   (let ((direction (ly:music-property event 'direction)))
@@ -418,7 +417,7 @@ Otherwise, return #f."
          (chord-repeat (ly:music-property chord 'duration)))
     (call-with-values
         (lambda ()
-          (partition (lambda (m) (music-is-of-type? m 'rhythmic-event))
+          (partition (music-type-predicate 'rhythmic-event)
                      elements))
       (lambda (chord-elements other-elements)
         (cond ((pair? chord-elements)
@@ -810,7 +809,8 @@ Otherwise, return #f."
             (new-line->lily-string))))
 
 (define-display-method PropertyUnset (expr)
-  (format #f "\\unset ~a~a~a"
+  (format #f "~a\\unset ~a~a~a"
+          (if (ly:music-property expr 'once #f) "\\once " "")
           (if (eqv? (*current-context*) 'Bottom)
               ""
               (format #f "~a . " (*current-context*)))
@@ -840,8 +840,11 @@ Otherwise, return #f."
 (define-display-method RevertProperty (expr)
   (let* ((symbol (ly:music-property expr 'symbol))
          (properties (ly:music-property expr 'grob-property-path
-                                        (list (ly:music-property expr 'grob-property)))))
-    (format #f "\\revert ~{~a~^.~}~a"
+                                        (list (ly:music-property expr
+                                                                 'grob-property))))
+         (once (ly:music-property expr 'once #f)))
+    (format #f "~a\\revert ~{~a~^.~}~a"
+            (if once "\\once " "")
             (if (eqv? (*current-context*) 'Bottom)
                 (cons symbol properties)
                 (cons* (*current-context*) symbol properties))
@@ -985,9 +988,11 @@ Otherwise, return #f."
 
 (define-display-method ApplyOutputEvent (applyoutput)
   (let ((proc (ly:music-property applyoutput 'procedure))
-        (ctx  (ly:music-property applyoutput 'context-type)))
-    (format #f "\\applyOutput #'~a #~a"
+        (ctx  (ly:music-property applyoutput 'context-type))
+        (grob (ly:music-property applyoutput 'symbol)))
+    (format #f "\\applyOutput ~a~@[.~a~] #~a"
             ctx
+            (and (symbol? grob) grob)
             (or (procedure-name proc)
                 (with-output-to-string
                   (lambda ()
@@ -1118,7 +1123,10 @@ Otherwise, return #f."
                                  elements ((music 'ContextSpeccedMusic
                                                   context-id "up"
                                                   context-type 'Staff
-                                                  element (music 'SimultaneousMusic elements (?ac-music)))
+                                                  element ?ac-music)
+                                           (music 'ContextSpeccedMusic
+                                                  context-id "up"
+                                                  context-type 'Staff)
                                            (music 'ContextSpeccedMusic
                                                   context-id "down"
                                                   context-type 'Staff))))