lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: More explanations to make-engraver available


From: David Kastrup
Subject: Re: More explanations to make-engraver available
Date: Sat, 09 Jun 2018 10:57:58 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

Urs Liska <address@hidden> writes:

> I'm wondering if there's any comprehensive write-up about the
> components of make-engraver available anywhere.
>
> So far all my (rather few) engravers have been simply based on a
> template provided by someone else, but I would be really glad to
> become more independent about that.
>
> I understand that a (Scheme) engraver is a lambda function that is
> passed a context, and that it (usually, always?) returns an object
> created with (make-engraver).
>
> I further see that within make-engraver one defines a (subset of a)
> number of different elements (initialize, process-music etc.) that
> will then process the given context at different stages of the
> compilation process. I have also read the docstring of make-engraver
> in scm/output-lib.scm.
>
> However, it is still unclear to me what exactly the different elements
> that can be defined in make-engraver are doing, in what order they are
> called, which information they are passed and what the "results" of
> these calls are.
>
> Rather than having to resort to browsing through the LSR and getting
> the information by guessing from existing engravers I would really
> like to see this properly explained somewhere, either in a
> comprehensive tutorial or - better - in the official documentation.
>
> Did I just not find that or is that actually missing information?

It's not user-level documented information.  Basically there is
ly/event-listener.ly and input/regression/scheme-engraver.ly and
input/regression/scheme-engraver-instance.ly for the Scheme level, well,
examples (documentation would be a bit much to say).

You'll likely find more useful information in the "Engraver tutorial" in
the Contributor's guide.  It's about C++ engravers but it's pretty
straightforward to figure out which parts would correspond to Scheme
engravers and which not (for example, ignore everything dealing with
garbage collection).

-- 
David Kastrup



reply via email to

[Prev in Thread] Current Thread [Next in Thread]