Urs,
First, I’m new to LilyPond internals, so take everything I’m saying here with a 
grain of salt. Please, someone correct me if I say something wrong.
When properties are set to a procedure instead of a value, we call that 
procedure a callback. The callback is called whenever code (often C++) tries to 
get that property. You can make any property a callback.
https://github.com/lilypond/lilypond/blob/master/scm/define-grobs.scm lists 
default properties. That will get you a lot of the way there.
If you want a complete list of all properties, take a look at the interface 
list of each type (again, see define-grobs.scm). Each interface has zero or 
more properties that all grobs with that interface can set. These are 
documented in the internals reference. For example, the properties you can set 
for grobs with accidental-interface are documented at 
http://lilypond.org/doc/v2.19/Documentation/internals/accidental_002dinterface
The order callbacks are called in is complicated. Again, callbacks are called 
when code tries to get the associated property. There are some gymnastics to 
ensure that some callbacks are not called too early or cause cyclical 
dependencies. One notable example is the unpure-pure container: 
http://lilypond.org/doc/v2.19/Documentation/notation/unpure_002dpure-containers
I hope this helps. Good luck!
        
        
Best,
        Joshua Netterfield
    
  From: lilypond-user <lilypond-user-bounces+joshua=nettek...@gnu.org> on 
behalf of Urs Liska <li...@openlilylib.org>
Sent: Friday, March 15, 2019 05:14
To: lilypond-user
Subject: Order of callback function calls Hi,

I'm thinking about collecting some (and hopefully a growing corpus) of 
the functions that help dealing with grobs in callback functions and 
make them accessible in an openLilyLib package. For example for so many 
applications it is necessary to find a grob's system, then get all 
objects within that and find specific ones within that list. Or find the 
NoteColumn's at the two ends of a spanner, etc. I think making such 
patterns more accessible with functions is a way for me to become more 
comfortable with this type of grob manipulation, and maybe it will be 
useful to make this area somewhat more accessible for an (even if only 
slightly) wider audience.

I know that some functions can only be called before or after certain 
points in the engraving process. For example all information about the 
absolute positioning of grobs is only available after-line-breaking, 
while some actions (e.g. setting properties like 'X-offset) will only 
have an effect before-line-breaking (whereas one can set the 'color 
property at any time).

I have two questions about this for now:

1. Is there a list somewhere detailing *all* available callbacks?

2. Is there anything general to say about when callbacks for regular 
properties like e.g. 'direction  or 'X-offset. I mean, if I say 
\override DynamicText.X-offset = #my-custom-callback, when will that be 
called?

Best
Urs


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

Reply via email to