]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 4472: Let \mark and Mark_engraver act consistently
authorDavid Kastrup <dak@gnu.org>
Wed, 1 Jul 2015 20:49:30 +0000 (22:49 +0200)
committerDavid Kastrup <dak@gnu.org>
Wed, 8 Jul 2015 05:14:45 +0000 (07:14 +0200)
Both will now accept a label meeting the number-or-markup? predicate.
Previously, \mark accepted any expression and Mark_engraver dealt only
partly with them.

lily/mark-engraver.cc
ly/music-functions-init.ly

index 52a68359534fced1677bf1088d46d763ff7af96b..7db0a781cc8d993807ac51af519218ef0b48d42d 100644 (file)
@@ -140,17 +140,11 @@ Mark_engraver::process_music ()
           if (!scm_is_number (m))
             m = get_property ("rehearsalMark");
 
-          if (scm_is_integer (m)
-              && scm_is_true (scm_exact_p (m)))
+          if (scm_is_number (m))
             {
-              int mark_count = scm_to_int (m);
-              mark_count++;
-              context ()->set_property ("rehearsalMark",
-                                        scm_from_int (mark_count));
+              context ()->set_property ("rehearsalMark", scm_oneplus (m));
+              m = scm_call_2 (proc, m, context ()->self_scm ());
             }
-
-          if (scm_is_number (m))
-            m = scm_call_2 (proc, m, context ()->self_scm ());
           else
             /* FIXME: constant error message.  */
             warning (_ ("rehearsalMark must have integer value"));
index 27070d3501a9e2355f309a709cfb28e206908b33..64cfa134b39bc046673067bc42b20faf35706642 100644 (file)
@@ -824,7 +824,7 @@ transpose from @var{around} to @var{to}.")
 
 mark =
 #(define-music-function
-   (label) ((scheme? '()))
+   (label) ((number-or-markup?))
   "Make the music for the \\mark command."
   (let* ((set (and (integer? label)
                    (context-spec-music (make-property-set 'rehearsalMark label)
@@ -835,7 +835,7 @@ mark =
     (if set
         (make-sequential-music (list set ev))
         (begin
-          (set! (ly:music-property ev 'label) label)
+          (if label (set! (ly:music-property ev 'label) label))
           ev))))
 
 musicMap =