Paul Morris <p...@paulwmorris.com> writes: > "To conclude the saga..." Thanks to David Kastrup's tip my function > can now automatically position all rests and their dots where they > need to be, no matter what voice they are in. Once again LilyPond can > handle just about anything. See attached file. > > I'm now curious about the difference between using > "ly:grob-property-data" and "ly:grob-property." The docs say: > > Function: ly:grob-property grob sym val > Return the value for property sym of grob. If no value is found, > return val or '() if val is not specified. > > Function: ly:grob-property-data grob sym > Return the value for property sym of grob, but do not process callbacks. > > http://www.lilypond.org/doc/v2.16/Documentation/internals/scheme-functions > > I assume this means that if a property is set to a function rather > than a static value, then ly:grob-property would process the function > to return a value, but ly:grob-property-data would not. Is that > right?
Yes. For things like stem directions, there may be a default callback which makes the decision about whether to put the stem upwards or downwards, and calling this fallback might trigger other typesetting decisions prematurely. Also, one does not get to see whether the ultimate direction decision was due to \voiceOne or such a tie-breaking callback. This may or may not be the case for rest direction, but because I was too lazy to double-check, I went for ly:grob-property-data. -- David Kastrup _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user