Hi Jean, > In an ideal world of 'pushing' grobs, that would > be written as something like > <c \pushTo "up" c'>^\p
YES!!! > but the \p should also be pushed or something > should be done about it because of its direction. For sure, there are potential complications… > it's worth noting that the part combiner, > which is implemented through dispatching between contexts, > is in a pitifully buggy state. This is the other “big fix” that I’m interested in contributing to going forward. =) I know some good developers (Dan, perhaps?) have improved it recently… but as you point out, it’s in a pitifully buggy state (half the time, I just rewrite combined parts manually!). And it’s useless for potentially really powerful applications — e.g. the piano reduction of a four-part choral work, three-part brass reductions, etc. — because it only accepts two voices. Not to mention its issues with \tuplet, \relative, quotes, etc. Is there some gain to be had by considering the three related concepts — “context pushing”, cross-staff items, and part-combining — together, to see where a single mechanism might help all three? Put another (OOP-ish) way: Are cross-staffing and part-combining instances of a context-pushing class? > Intuitively, I tend to believe that > an approach based on actually pushing grobs rather > than events would be more effective. That would > also have the direct advantage of allowing to > push the likes of bar numbers that don't have > a cause in events. That was my [totally naïve] instinct, too (cf. https://lists.gnu.org/archive/html/lilypond-user/2021-10/msg00436.html). I look forward to seeing where this discussion leads! Thanks, Kieren. ________________________________ Kieren MacMillan, composer (he/him/his) ‣ website: www.kierenmacmillan.info ‣ email: kie...@kierenmacmillan.info