> -----Original Message----- > From: Nicolas Sceaux [mailto:[EMAIL PROTECTED] > Sent: Saturday, April 26, 2008 3:49 AM > To: [EMAIL PROTECTED] > Cc: lily-devel; Mats Bengtsson > Subject: Re: Build failure with Scheme (again) > > Le 26 avr. 08 à 04:28, Han-Wen Nienhuys a écrit : > > > It would be cool if we could define the markups like > > > > (define-markup-command (bla layout properties width arg) (number? > > markup?) > > ((line-thickness 0.0) > > (corner-radius 0.2)) > > > > .. > > ) > > > > where this defines that the bla command uses line-thickness and > > corner-radius, and automatically extracts them from properties. We > > could then annotate the bla command automatically. > > > > > > Nicolas, what do you think? > > > (0.0 and 0.2 would be default values, in case the property > are not already defined?) > > nicolas >
This is a cool idea. I like the fact that it gives a good way to document the default values of the properties, and it lets us define the properties that are used. This gets rid of two of the major problems with fret-diagrams properties. There remains only the third. In order to preserve the global namespace (as well as to make overrides more convenient) we moved to fret-diagram-details as the primary property for fret diagrams, with all the other properties residing inside the details. Under this syntax, the value of fret-diagram-details would show up as a big alist. Coupled with the documentation of the individual elements of fret-diagram details which is in the docstring for the fret-diagram-interface, I think this would automatically create documentation that (a) described each of the properties, and (b) listed the default value for each of the properties. One concern I have is that if we are going to move to this syntax, we need to develop some mechanism for ensuring that the defaults in the definition are actually used in the body of the markup command. Perhaps the defaults in the definition are put into a default-props alist, so we can get values by something like (let myprop (chain-assoc-get props 'myprop (chain-assoc-get default-props 'myprop ()))) We really don't want to be declaring default values in the definition, then assigning different default values in the body. Carl Sorensen _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel