Carl Sorensen <c_soren...@byu.edu> writes: > On 11/15/09 11:15 PM, "David Kastrup" <d...@gnu.org> wrote: > >> Carl Sorensen <c_soren...@byu.edu> writes: >> >>> The property signature is a documentation-only convention. It has >>> no functionality except for producing documentation. >> >> Thanks, but wrong. Please look in the definition of >> define-builtin-markup-command. The property signature symbols are >> let-bound to the respective property values (or the default if none >> are there) within the body of define-builtin-markup-command. > > OK, not the first time I've been wrong. >> >> If indeed no active Lilypond developer _realises_ that this is the >> case, then the respective code should just be thrown out instead of >> wasting performance with property lookups that are ignored. > > So there is some history here. Originally there was no > define-builtin-markup-command; all markups were defined as > define-markup-command, where chain-assoc-get was used, and defaults > were put in the chain-assoc-get call. > > Then the documentation code was added, and > define-builtin-markup-command was added. I never looked too closely > at the code that was added. Sorry about the mistake. > > So, IIUC, the let-binding actually doesn't do anything, because the > code in the body of the function overwrites it with its own > chain-assoc-get call. Is that right?
I can't vouch for anything except for the harp-pedal code right now. With the harp-pedal code, the let-binding doesn't do anything because the body of the function just calls an external work function for the brunt work. And this other function indeed uses chain-assoc-get, and would not see the let-bindings from the scope of the other function, anyway. Ok, I did an actual grep for uses of define-builtin-markup-command. With very few exceptions (about 2 or 3, one being the harp-pedal code), all the commands appear to use the let-binding mechanism. > I agree here. But from my (apparently clueless) point of view, that > was fundamentally what happened. In order to convert from > define-markup-command to define-builtin-markup-command, two arguments > were added: a documentation category and a default properties list. My code review disagrees. The let-binding and property lookup appears to be quite consistently in use. > So what if, instead of having define-builtin-markup-command do the let > binding for the properties, we just had it add those property defaults > on the end of the props argument? That involves copying the whole property list chain (using append rather than append!). An efficiency problem. > That would allow any functions written to work with > define-markup-command to use chain-assoc-get as normal, and defaults > that were added by define-builtin-markup-command would replace those > in the scheme function (because the values would be added to props, so > chain-assoc-get in the function would never get the default value). The way it looks it would make a lot of existing code uglier. >> And if nobody realises what the functionality actually does, this >> does not help. > > I agree. The code review does not seem to support my premise. Obviously the programmer(s) introducing markups with define-builtin-markup-command have predominantly realized what this does. -- David Kastrup _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel