;;;; You should have received a copy of the GNU General Public License
;;;; along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
+(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
(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))
(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?
(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")))