I have now fixed the problem with quoting \set and \override... It was a very simply problem: The list of events to be quoted for a time step was created basically using (cons ev oldevents) in the listener, so they were in the reverse order. What was missing was reverting it before using it in the code....
Patch (including this fix and the change to allow all StreamEvents to be quoted) can be found on rietvield: http://codereview.appspot.com/124064 Okay to apply? Cheers, Reinhold Am Samstag, 22. August 2009 13:36:33 schrieb Reinhold Kainhofer: > Am Samstag, 22. August 2009 13:06:59 schrieb Reinhold Kainhofer: > > Am Donnerstag, 20. August 2009 00:19:41 schrieb Neil Puttock: > > > 2009/8/14 Reinhold Kainhofer <[email protected]>: > > > > I tried adding various classes to the quotedEventTypes list, e.g. > > > > override- property-event general-music override-property > > > > OverrideProperty property-set PropertySet, but nothing seems to have > > > > any effect. Any idea how to make lilypond also quote overrides and > > > > \set commands? > > > > > > As I hinted in the discussion you mentioned, it's partly due to how > > > recording-group-emulate is coded: > > > > Ah, I would have never guessed that recording-group-emulate would be > > involved... > > > > Shouldn't add-quotable and recording-group-emulate be moved out of the > > partcombiner code and somewhere more general? > > > > > If you change this to listen to 'StreamEvent, the other classes will > > > be acknowledged, which will allow simple context settings to work > > > (like fontSize). > > > > > > Unfortunately, there's still a problem with \override and \revert; > > > they're recorded, but it seems the events associated with them either > > > aren't broadcast, or they're ignored by the Engraver_group. > > [...] > > > -) \once\override Grob #'prop = #val works, but the override without > > \once does not work. Unfortunately, acciaccatura etc. use \override > > without \once. These overrides are recorded (i.e. they are checked for in > > Quote_iterator::accept_music_type), but they don't seem to have an > > effect. > > Actually, the Engraver_Group receives and processes them perfectly well. > The real problem is that each \override (without \once) is immediately > followed by a corresponding Revert event, of course rendering that > override ineffective: > > Event class: note-event (in Quote_iterator::accept_music_type) > Event class: Override (in Quote_iterator::accept_music_type) > Engraver_group::override: Stem, (stroke-style), "grace" > Event class: Revert (in Quote_iterator::accept_music_type) > Engraver_group::revert: Stem, (stroke-style), > Event class: note-event (in Quote_iterator::accept_music_type) > Event class: note-event (in Quote_iterator::accept_music_type) > > So, I suppose this is a problem with the recording-group-emulator rather > than the Engraver_group or the broadcasting. > > Cheers, > 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
