]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 2525: Fix a number of display-lily shortcomings
authorDavid Kastrup <dak@gnu.org>
Wed, 9 May 2012 15:46:05 +0000 (17:46 +0200)
committerDavid Kastrup <dak@gnu.org>
Mon, 14 May 2012 05:20:55 +0000 (07:20 +0200)
Several postevents including non-shorthand articulations were printed with
redundant direction flag - , command events on single note events were
missing the required direction flag - , and a few other problems.

input/regression/display-lily-tests.ly
scm/define-music-display-methods.scm

index fdec20519e816a79eb4c10c85d89a5176389114e..6e7a3ab24c9b418aac64bc0cdb597ff25b7765b4 100644 (file)
@@ -115,13 +115,13 @@ stderr of this run."
 \test ##[ { c-> c^> c_> } #]
 \test ##[ { c-. c^. c_. } #]
 \test ##[ { c-_ c^_ c__ } #]
-\test ##[ { c-\trill c^\trill c_\trill } #]
+\test ##[ { c\trill c^\trill c_\trill } #]
 \test ##[ { c-1 c^2 c_3 } #]                           % FingerEvent
 \test ##[ { c-"foo" c^"foo" c_"foo" } #]               % TextScriptEvent
 \test ##[ { R1*4-"foo" R^"foo" R_"foo" } #]            % MultiMeasureTextEvent
 \test ##[ { < c\harmonic >4 < c e\harmonic > } #]      % HarmonicEvent
-\test ##[ { c-\glissando c^\glissando c_\glissando } #]        % GlissandoEvent
-\test ##[ { c-\arpeggio c^\arpeggio c_\arpeggio } #]   % ArpeggioEvent
+\test ##[ { c\glissando c^\glissando c_\glissando } #] % GlissandoEvent
+\test ##[ { c\arpeggio c^\arpeggio c_\arpeggio } #]    % ArpeggioEvent
 \test ##[ { c\p c^\ff c_\sfz } #]                      % AbsoluteDynamicEvent
 \test ##[ { c[ c] c^[ c^] c_[ c_] } #]                         % BeamEvent
 \test ##[ { c( c) c^( c^) c_( c_) } #]                         % SlurEvent
@@ -141,8 +141,8 @@ stderr of this run."
 \test ##[ \breathe #]
 \test ##[ { c \[ c \] } #]                     % LigatureEvent
 \test ##[ \~ #]                                                % PesOrFlexaEvent
-\test ##[ { c-\bendAfter #3 } #]    % BendAfterEvent
-\test ##[ < c-\rightHandFinger #1 > #]    % StrokeFingerEvent
+\test ##[ c\bendAfter #3 #]    % BendAfterEvent
+\test ##[ c\rightHandFinger #1 #]    % StrokeFingerEvent
 
 \test ##[ \break #]
 \test ##[ \noBreak #]
index 782552dfeb80f2f62a10abc185440b8371776c1f..6d0449edfc5c5ebd0ef9443bdc17ab086d2c8e5c 100644 (file)
@@ -181,17 +181,22 @@ expression."
                         ""
                         tremolo-type))))
 
-(define-post-event-display-method ArticulationEvent (event parser) #t
-  (let ((articulation  (ly:music-property event 'articulation-type)))
-    (case (string->symbol articulation)
-      ((marcato) "^")
-      ((stopped) "+")
-      ((tenuto)         "-")
-      ((staccatissimo) "|")
-      ((accent) ">")
-      ((staccato) ".")
-      ((portato) "_")
-      (else (format #f "\\~a" articulation)))))
+(define-display-method ArticulationEvent (event parser) #t
+  (let* ((articulation  (ly:music-property event 'articulation-type))
+        (shorthand
+         (case (string->symbol articulation)
+           ((marcato) "^")
+           ((stopped) "+")
+           ((tenuto)    "-")
+           ((staccatissimo) "|")
+           ((accent) ">")
+           ((staccato) ".")
+           ((portato) "_")
+           (else #f))))
+    (format #f "~a~:[\\~;~]~a"
+           (event-direction->lily-string event shorthand)
+           shorthand
+           (or shorthand articulation))))
 
 (define-post-event-display-method FingeringEvent (event parser) #t
   (ly:music-property event 'digit))
@@ -202,16 +207,16 @@ expression."
 (define-post-event-display-method MultiMeasureTextEvent (event parser) #t
   (markup->lily-string (ly:music-property event 'text)))
 
-(define-post-event-display-method BendAfterEvent (event parser) #t
+(define-post-event-display-method BendAfterEvent (event parser) #f
   (format #f "\\bendAfter #~a" (ly:music-property event 'delta-step)))
 
 (define-post-event-display-method HarmonicEvent (event parser) #f "\\harmonic")
-(define-post-event-display-method GlissandoEvent (event parser) #t "\\glissando")
-(define-post-event-display-method ArpeggioEvent (event parser) #t "\\arpeggio")
+(define-post-event-display-method GlissandoEvent (event parser) #f "\\glissando")
+(define-post-event-display-method ArpeggioEvent (event parser) #f "\\arpeggio")
 (define-post-event-display-method AbsoluteDynamicEvent (event parser) #f
   (format #f "\\~a" (ly:music-property event 'text)))
 
-(define-post-event-display-method StrokeFingerEvent (event parser) #t
+(define-post-event-display-method StrokeFingerEvent (event parser) #f
   (format #f "\\rightHandFinger #~a" (ly:music-property event 'digit)))
 
 (define-span-event-display-method BeamEvent (event parser) #f "[" "]")
@@ -494,7 +499,7 @@ Otherwise, return #f."
 ;;;
 
 (define (simple-note->lily-string event parser)
-  (format #f "~a~a~a~a~a~a~{~a~}" ; pitchname octave !? octave-check duration optional_rest articulations
+  (format #f "~a~a~a~a~a~a~:{~:[-~;~]~a~}" ; pitchname octave !? octave-check duration optional_rest articulations
          (note-name->lily-string (ly:music-property event 'pitch) parser)
          (octave->lily-string (ly:music-property event 'pitch))
          (let ((forced (ly:music-property event 'force-accidental))
@@ -519,7 +524,9 @@ Otherwise, return #f."
          (if ((make-music-type-predicate 'RestEvent) event)
              "\\rest" "")
          (map-in-order (lambda (event)
-                         (music->lily-string event parser))
+                         (list
+                          (post-event? event)
+                          (music->lily-string event parser)))
                        (ly:music-property event 'articulations))))
 
 (define-display-method NoteEvent (note parser)