From 7ec5ca8b1f63d416a357be079355b6d2824a5758 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Wed, 1 Jul 2015 22:49:30 +0200 Subject: [PATCH] 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. --- lily/mark-engraver.cc | 12 +++--------- ly/music-functions-init.ly | 4 ++-- 2 files changed, 5 insertions(+), 11 deletions(-) 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 = -- 2.39.5