Keith OHara <k-ohara5...@oco.net> writes:

> Werner LEMBERG <wl <at> gnu.org> writes:
>
>> Instead of having an optional argument 
>
> Remember that David's previous approach used no optional arguments,
> the optional components were attached with dots to the core arguments
>   
>   \override [Context.]Grob property[.subproperty] = #value
>   \tweak [Grob.]property.[subproperty] value c2
>
>> I would prefer that both commands simply accept such
>> a hierarchy, making e.g.
>> 
>>   \override color ...
>>   \override Accidental.color ...
>>   \override Voice.Accidental.color ...
>> 
>> and
>> 
>>   \tweak color ...
>>   \tweak Accidental.color ...
>>   \tweak Voice.Accidental.color ...
>> 
>> valid syntax

That's what is accepted in the current version of the patch.  Of course,
except for \tweak Voice.Accidental.color which makes _absolutely_ no
sense whatsoever since tweaks are not associated with contexts.  And
actually, it _will_ get accepted but will probably complain later that
the tweaked grob does not have a grob property called "Voice".

> Remember that by far the most common cases use no optional components,
> thus no dots in the old syntax.  Also remember that 
>  \override color = #blue
> will not do anything useful even if it is valid syntax. (David's latest 
> patch prints a reasonable message for the error above, before
> crashing.)

It just does the following non-fatal error in the current version
(updated at origin/dev/syntax):

xxx.ly:1:12: error: bad grob property path
{ \override 
            color = #blue }

That's good enough.

> I would prefer to keep David's previous syntax in documentation, even if
> we accept the fully-dotted form, because the space helps me find my way
> when copying new forms from the manuals.
>
>   \override Ceol.Clochan dath.mion = #glas
>
> I forget a lot, but am reminded seeing the above that \override always 
> takes a grob (sometimes with context to its left) and the property 
> (rarely with sub-properties to its right).

On the other hand, things like \overrideProperty can only have one
interface or the other, and "put a single dotted symbol list here to
specify the path" with no alternative readings is dead simple and
straightforward.  And starting with version 2.19, or at the latest 2.21,
I would want to remove the compatibility mode which is really
complicating things both in the parser as well as conceptually.

-- 
David Kastrup


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

Reply via email to