lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: \set vs \override


From: David Kastrup
Subject: Re: \set vs \override
Date: Mon, 23 Nov 2009 12:10:39 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)

Mats Bengtsson <address@hidden> writes:

> David Kastrup wrote:
>>
>>> We used to have the same command for setting both context and object
>>> properties, see
>>> http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS.html
>>>     
>>
>> I read
>>
>>     The syntax for setting properties has been simplified: the following
>>     table lists the differences:
>>
>>                     (old)                           (new)
>>
>>               \property A.B = #C                \set A.B = #C
>>               \property A.B \unset              \unset A.B
>>               \property A.B \set #C = #D        \override A.B #C = #D
>>               \property A.B \override #C = #D   (removed)
>>               \property A.B \revert #C          \revert A.B #C
>>      There is no differentiation between "context" and "object"
>> properties
>> here.
>>   
> Of course there is! The \property A.B = #C syntax was used for context
> properties (called "translation properties" in the 2.0 documentation)
> whereas the \property A.B {\set,\override} #C = #D was used for object
> properties (called "layout properties" in the 2.0 documentation). See
> for example
> http://lilypond.org/doc/v2.0/Documentation/user/out-www/lilypond/Tuning-output.html#Tuning-output
> which explicitly states that you should not confuse layout properties
> with translation properties.

Sigh.  Sure.  It tells

    Do not confuse layout properties with translation
    properties. Translation properties always use a mixed caps style
    naming, and are manipulated using \property:

           \property Context.propertyName  = value

    Layout properties are use Scheme style variable naming, i.e. lower
    case words separated with dashes. They are symbols, and should
    always be quoted using #'.

But that tells nothing about the actual difference.  It just tells you
that they have different naming conventions and should be manipulated
using different commands.

But WHY?!?!?!?!?!

> In
> http://lists.gnu.org/archive/html/lilypond-user/2003-10/msg00195.html
> you can find an attempt I did at that time to introduce the different
> kinds of properties and how to set them.

Again, this lists different properties but does not mention at _all_ why
one would want to have different commands for setting different
properties.

> I share your concerns that there's no clear-cut distinction between
> what is handled by layout properties and and what's handled by context
> properties, but it used to be much worse in old LilyPond versions,
> where we had more context properties that de facto dealt with only one
> particular layout object.

But why different commands for setting properties?  I don't use
different commands for setting array values depending on what I am going
to use the array for.  I don't use different commands for setting list
values depending on what I am going to use the list for.

Why for properties?  The sort of "oh, it works anyway if you ignore the
classification (perhaps with a warning), but that's being naughty".
What is the point behind enforcing some discipline that apparently does
not a have a coherent reason that could be explained in one or several
dozen sentences?

I don't get it.  And the more answers I get that don't address my
question, the more suspicious I grow that there is no actual point.

-- 
David Kastrup





reply via email to

[Prev in Thread] Current Thread [Next in Thread]