On Monday 06 November 2006 12:59, Mats Bengtsson wrote: > Erik Sandberg wrote: > > On Monday 06 November 2006 09:25, Mats Bengtsson wrote: > > > > Mats, do you think it would be useful with an operator \newClone to clone > > the current context? E.g. > > \new Staff \with {\consists Foo_engraver bar=#'baz} > > { c d \tiny e f \newClone Staff { g f e d} c d e } > > would be equivalent to: > > \new Staff \with {\consists Foo_engraver bar=#'baz} > > { c d \tiny e f \new Staff \with {\consists Foo_engraver bar=#'baz} { > > \tiny g f e d} c d e } > > > > (I think such operator can come out as a side-effect of some work I'm > > doing) > > Would it even make sense to make this the default behaviour of \new? > At least, it would probably cause less surprise to a newbie than the > current implementation, in examples like: > \relative c'{ \tiny c d <<{e d} \\ {c b}>> }
You have a point here. Perhaps we could have a context property cloneNewContexts, defaulted to #t for voices, which makes sure that contexts creations in the current context clone the current context, if the context types match. (so below, the context hierarchy would be Global-Score-Lyrics where the inner Voice is created, hence no settings would be inherited; this also means that the inner \new Voice should create a new staff implicitly). I think the difficult thing is that the syntactical hierarchy of our input language doesn't match the hierarchy of contexts. > On the other hand, it would probably make it less obvious for the advanced > user to predict exactly what LilyPond does, for example in situations like > > \relative c' \new Voice{ > c d e f > << > c1 > \new Lyrics \lyricmode { > Some4 text > << \new Voice \notemode { c d e2 } > {some more text } > > } > > } > where it's not obvious if the inner Voice context would inherit anything > from the outer one (maybe this is already crystal clear to you). -- Erik _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel