]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/scheme-engravers.scm
lilypond-manuals.css: edit color scheme and some spacing
[lilypond.git] / scm / scheme-engravers.scm
index ccb1fb5b0d1a93b89d08db3e8366d1fee26cbacc..f4902cb94b99b2c31b05f064efca75bb8df13c01 100644 (file)
 ;;;; 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
@@ -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")))