I have a hard problem, which probably only someone with a lot of knowledge about the LilyPond internals can solve:
I need to give the user the possibility to change the behavior of an interator by setting some property (or some other way, I don't care about the details). An example for this is the Lyric_combine_music_iterator, which checks for the context's associatedVoiceContext property. Now the problem is that when the iterator does it's job in the *_iterator::process function, the context properties for that moment have not been set yet. So, all calls to e.g. \set Lyrics.associatedVoiceContext = ... will take effect one moment too late. The docs note that this is known and "not a bug", which I would object too. It is a bug, we have just refused to fix it so far. A \set should always take effect immedately, not one time step later in some cases, while in others it takes effect immediately. I'm running into the same problem with the part-combiner. Can you think of any way to set a context property before the iterator's process method is called? Or alternatively, is there any object accepted by the parser that can be (ab)used to influence how an iterator does its job? Music events obviously do not work for this case. As I see it, we are currently missing a way to configure an interator. For contexts and engravers we have context properties, for grobs we have grob properties, but for iterators, there is no such thing... Thanks a lot, Reinhold -- ------------------------------------------------------------------ Reinhold Kainhofer, [email protected], http://reinhold.kainhofer.com/ * Financial & Actuarial Math., Vienna Univ. of Technology, Austria * http://www.fam.tuwien.ac.at/, DVR: 0005886 * LilyPond, Music typesetting, http://www.lilypond.org _______________________________________________ lilypond-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/lilypond-devel
