"Trevor Daniels" <t.dani...@treda.co.uk> writes:

> Prompted by the recent discussion on lute tablature, I tried coding a
> Scheme engraver to create the duration grobs but quickly ran into a
> problem.  I need to collect information from both a Listener and an
> Acknowledger so the obvious place to build the grob is in
> stop-translator-timestep,

No, no, no.  stop-translator-timestep really is only for cleanup work.
Stuff is no longer in working order then.  You want process-acknowledged
here I think.

There will always be a call to process-acknowledged whenever grobs have
been created, and _reading_ stuff from grobs should be delayed until
then since other acknowledgers might _write_ stuff into a grob even
after your personal acknowledger has been called.  So the basic workflow
is to use the various acknowledgers to _record_ the grobs you are
interested in and _write_ stuff into them (or do read/write stuff that
more or less is accumulative and/or really unrelated to other
engravers), and then use the process-acknowledged hook for processing
(including _reading_) the grobs you had recorded.

You can create new grobs in process-acknowledged.  That will lead to a
new cycle of acknowledger calls followed by process-acknowledged.  Only
when all those cycles are over is stop-translator-timestep called, and
then creating grobs is no longer an option.

-- 
David Kastrup

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to