Edward Neeman <edward.nee...@gmail.com> writes:

> Thanks David, that makes a lot of sense!
>
> With your explanation in mind I’m thinking the current implementation in best.

Well, the problem really is finding an implementation that does not
cause surprises.  One could rather brutally restore all settings made
inside of a \grace group that are subject to \grace settings.  Those
would be (currently)

(define general-grace-settings
  `((Voice Stem font-size -3)
    (Voice Flag font-size -3)
    (Voice NoteHead font-size -3)
    (Voice TabNoteHead font-size -4)
    (Voice Dots font-size -3)
    (Voice Stem length-fraction 0.8)
    (Voice Stem no-stem-extend #t)
    (Voice Beam beam-thickness 0.384)
    (Voice Beam length-fraction 0.8)
    (Voice Accidental font-size -4)
    (Voice AccidentalCautionary font-size -4)
    (Voice Script font-size -3)
    (Voice Fingering font-size -8)
    (Voice StringNumber font-size -8)))

(define-public score-grace-settings
  (append
    `((Voice Stem direction ,UP)
      (Voice Slur direction ,DOWN))
    general-grace-settings))

So basically at the end of the \grace group, rewind to what was there
before.  However, the property lists are per-Grob, not per-property, so
either one would have to restore the complete state of all the listed
Grobs, or one would have to filter the lists into components relating to
the desired properties and unrelated components, and reassemble the
respective lists afterwards.

Probably easier to just restore the complete Grob definitions.  Would
people be surprised if a color override of a Beam was reverted at the
end of a \grace group?

I don't know.

-- 
David Kastrup

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to