X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fscheme-engravers.scm;h=f4902cb94b99b2c31b05f064efca75bb8df13c01;hb=90e4d7057f3857da049dfda3d130017d4719bd6b;hp=ccb1fb5b0d1a93b89d08db3e8366d1fee26cbacc;hpb=183e094c0d1414bc8af7ccc4c53ac0f9a039d6d3;p=lilypond.git diff --git a/scm/scheme-engravers.scm b/scm/scheme-engravers.scm index ccb1fb5b0d..f4902cb94b 100644 --- a/scm/scheme-engravers.scm +++ b/scm/scheme-engravers.scm @@ -15,6 +15,12 @@ ;;;; You should have received a copy of the GNU General Public License ;;;; along with LilyPond. If not, see . +(define-public (ly:make-listener callback) + "This is a compatibility wrapper for creating a \"listener\" for use +with @code{ly:add-listener} from a @var{callback} taking a single +argument. Since listeners are equivalent to callbacks, this is no +longer needed." + callback) (define-public (Measure_counter_engraver context) "This engraver numbers ranges of measures, which is useful in parts as an @@ -30,22 +36,22 @@ receive a count with @code{\\startMeasureCount} and (make-engraver (listeners - ((measure-counter-event engraver event) - (cond - ((and (= START (ly:event-property event 'span-direction)) - go?) - (set! stop? #t) - (ly:input-warning - (ly:event-property event 'origin) - "count not ended before another begun")) - ((= START (ly:event-property event 'span-direction)) - (set! go? #t) - ;; initialize one less so first measure receives a count spanner - (set! last-measure-seen - (1- (ly:context-property context 'currentBarNumber)))) - ((= STOP (ly:event-property event 'span-direction)) - (set! stop? #t) - (set! go? #f))))) + ((measure-counter-event engraver event) + (cond + ((and (= START (ly:event-property event 'span-direction)) + go?) + (set! stop? #t) + (ly:input-warning + (ly:event-property event 'origin) + "count not ended before another begun")) + ((= START (ly:event-property event 'span-direction)) + (set! go? #t) + ;; initialize one less so first measure receives a count spanner + (set! last-measure-seen + (1- (ly:context-property context 'currentBarNumber)))) + ((= STOP (ly:event-property event 'span-direction)) + (set! stop? #t) + (set! go? #f))))) ((process-music trans) (let ((col (ly:context-property context 'currentCommandColumn)) @@ -79,7 +85,7 @@ receive a count with @code{\\startMeasureCount} and (set! (ly:grob-property c 'count-from) (+ counter elapsed)) (set! count-spanner c) (set! elapsed (1+ elapsed)))))) - (set! last-measure-seen current-bar))) + (set! last-measure-seen current-bar))) ((finalize trans) (if go? @@ -88,3 +94,26 @@ receive a count with @code{\\startMeasureCount} and (ly:grob-suicide! count-spanner) (set! count-spanner '()) (ly:warning "measure count left unfinished"))))))) + +(ly:register-translator + Measure_counter_engraver 'Measure_counter_engraver + '((grobs-created . (MeasureCounter)) + (events-accepted . (measure-counter-event)) + (properties-read . (currentCommandColumn + measurePosition + currentBarNumber)) + (properties-written . ()) + (description . "\ +This engraver numbers ranges of measures, which is useful in parts as an +aid for counting repeated measures. There is no requirement that the +affected measures be repeated, however. The user delimits the area to +receive a count with @code{\\startMeasureCount} and +@code{\\stopMeasureCount}."))) + +(ly:register-translator + Span_stem_engraver 'Span_stem_engraver + '((grobs-created . (Stem)) + (events-accepted . ()) + (properties-read . ()) + (properties-written . ()) + (description . "Connect cross-staff stems to the stems above in the system")))