lilypond-user
[Top][All Lists]
Advanced

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

Re: Contexts affected by \override and \overrideProperty


From: David Kastrup
Subject: Re: Contexts affected by \override and \overrideProperty
Date: Tue, 19 Feb 2019 12:27:58 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

Urs Liska <address@hidden> writes:

> Am 18.02.19 um 17:30 schrieb David Kastrup:
>> Urs Liska <address@hidden> writes:
>>
>>> Can someone explain to me why \overrideProperty Staff.BarLine.color
>>> #red colors the barlines in *all* staves while \override
>>> Staff.BarLine.color = #red only affects the current Staff context?
>>>
>>> I have just re-read
>>> http://lilypond.org/doc/v2.19/Documentation/notation/set-versus-override
>>> and am scratching my head. I do claim to have some experience by now
>>> but this page isn't actually really helpful:
>>>
>>>     "The commands ... |\overrideProperty| change grob properties by
>>>     bypassing all context properties completely and, instead, catch
>>>     grobs as they are being created, setting properties on them ... for
>>>     a specific override."
>>>
>>> This doesn't give a clue when \overrideProperty should (or must) be
>>> used instead of \override or what the difference in behaviour actually
>>> is.
>>>
>>> \overrideProperty is also present on
>>> http://lilypond.org/doc/v2.19/Documentation/notation/available-music-functions#index-overrideProperty-1
>>>
>>>     |overrideProperty| [music] - grob-property-path (list of indexes or
>>>     symbols) value (any type)
>>>         Set the grob property specified by grob-property-path to value.
>>>         grob-property-path is a symbol list of the form
>>>         |Context.GrobName.property| or |GrobName.property|, possibly
>>>         with subproperties given as well.
>>>
>>>         As opposed to |\override| which overrides the context-dependent
>>>         defaults with which a grob is created, this command uses
>>>         |Output_property_engraver| at the grob acknowledge stage. This
>>>         may be necessary for overriding values set after the initial
>>>         grob creation.
>>>
>>> This gives an indication for why it may in some cases be necessary to
>>> use \overrideProperty but it doesn't explain why it seems to affect
>>> objects in all contexts instead of just the one where it is used.
>> Because the respective engraver is only active at Score level and
>> overrides the properties in _all_ contexts of the given type.
>
>
> So this means that if I'm in the situation where I'm forced to use
> \overrideProperty this property will always be overridden on the Score
> context?

No, just in all Staff contexts (if Staff is what you specified).  The
Score context property will remain unchanged.

This does not sound overly useful, does it?

-- 
David Kastrup



reply via email to

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