X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Ftranslation-functions.scm;h=219275fafa86d23f48a38f52c23bad42efb08caa;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=3e65016edb9b391225afe2536b97f4ad61e66c88;hpb=1d3beed53413315ec6c0553b003b8c5776f8c38f;p=lilypond.git diff --git a/scm/translation-functions.scm b/scm/translation-functions.scm index 3e65016edb..219275fafa 100644 --- a/scm/translation-functions.scm +++ b/scm/translation-functions.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; (c) 1998--2014 Han-Wen Nienhuys +;;;; (c) 1998--2015 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -697,39 +697,3 @@ only ~a fret labels provided") (export every-nth-repeat-count-visible) (define-public (all-repeat-counts-visible count context) #t) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; make-engraver helper macro - -(defmacro-public make-engraver forms - "Helper macro for creating Scheme engravers. - -The usual form for an engraver is an association list (or alist) -mapping symbols to either anonymous functions or to another such -alist. - -@code{make-engraver} accepts forms where the first element is either -an argument list starting with the respective symbol, followed by the -function body (comparable to the way @code{define} is used for -defining functions), or a single symbol followed by subordinate forms -in the same manner. You can also just make an alist pair -literally (the @samp{car} is quoted automatically) as long as the -unevaluated @samp{cdr} is not a pair. This is useful if you already -have defined your engraver functions separately. - -Symbols mapping to a function would be @code{initialize}, -@code{start-translation-timestep}, @code{process-music}, -@code{process-acknowledged}, @code{stop-translation-timestep}, and -@code{finalize}. Symbols mapping to another alist specified in the -same manner are @code{listeners} with the subordinate symbols being -event classes, and @code{acknowledgers} and @code{end-acknowledgers} -with the subordinate symbols being interfaces." - (let loop ((forms forms)) - (if (cheap-list? forms) - `(list - ,@(map (lambda (form) - (if (pair? (car form)) - `(cons ',(caar form) (lambda ,(cdar form) ,@(cdr form))) - `(cons ',(car form) ,(loop (cdr form))))) - forms)) - forms)))