From: David Kastrup Date: Wed, 1 Jul 2015 20:49:30 +0000 (+0200) Subject: Issue 4472: Let \mark and Mark_engraver act consistently X-Git-Tag: release/2.19.23-1~16 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=7ec5ca8b1f63d416a357be079355b6d2824a5758;p=lilypond.git Issue 4472: Let \mark and Mark_engraver act consistently 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. --- diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc index 52a6835953..7db0a781cc 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -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")); diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly index 27070d3501..64cfa134b3 100644 --- a/ly/music-functions-init.ly +++ b/ly/music-functions-init.ly @@ -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 =