Jean Abou Samra <j...@abou-samra.fr> writes: > Le 07/01/2023 à 17:11, Kieren MacMillan a écrit : >> Could you explain this a bit more, please? This is a position I’ve >> never quite understood about Issue #34: I would love to see an input >> where I can’t determine the output with certainty just from the >> input. > > > Just take the example I gave earlier and remove the grace skips. > > \version "2.24.0" > > << > \new Staff { \grace { c'8 d'8 } c'1 } > \new Staff { > \once \override Staff.TimeSignature.color = "red" > \once \override NoteHead.color = "red" > c'1 > } >>> > > > (looks like the staves are swapped if you remove \new Staff...). > > Do the overrides occur before the graces?
Yes. > In that case, the NoteHead one has no effect, because \once applies to > the next time step only, and the next time step is for a grace note > another voice. The recovery action of \once should likely occur after the next _local_ timestep. > Do they occur after? In that case, the TimeSignature one has no > effect, because the TimeSignature grob was created before the graces. > The latter is the currently chosen interpretation. With that interpretation, \once \override Staff.NoteHead.color would color _all_ grace notes. An alternative would be to try to involve \context ... constructs in the grace fixup decisions, in which case NoteHead.color and Staff.NoteHead.color would lead to different timings of the result. > So what do you do for an arbitrary \once \override? Especially if > there is a Scheme engraver that might decide to create this grob at > any time? \once \override is not a grob. -- David Kastrup