lilypond-user
[Top][All Lists]
Advanced

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

Re: RemoveEmptyStaffContext and merge rests snippet not co-operating


From: David Kastrup
Subject: Re: RemoveEmptyStaffContext and merge rests snippet not co-operating
Date: Sun, 16 Sep 2012 19:08:47 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux)

Thomas Morley <address@hidden> writes:

>> \context {
>>   \Staff
>>   \override RestCollision #'positioning-done = #merge-rests-on-positioning
>>   \override MultiMeasureRest #'Y-offset =
>> #merge-multi-measure-rests-on-Y-offset
>> }
>>
>> I simulated this in my attached example by having a \layout block at the top
>> of the file.  The result is that, as soon as I add
>> \RemoveEmptyStaffContext to

>From ly/engraver-init.ly

%% Keep the old definitions in here for compatibility (they erase previous
%% settings to the corresponding context!).
%% For new scores, one should simply insert the \RemoveEmptyStaves settings
%% into the desired context. That's just as easy, requires only one line more
%% (the \*Staff), but preserves previous context mods.
%% TODO: DEPRECATED_2.13.17, remove at some point in the future
RemoveEmptyStaffContext = \context {
  \Staff
  \RemoveEmptyStaves
}

As you can see, RemoveEmptyStaffContext consists of a copy of \Staff
(made at the time ly/engraver-init.ly is loaded) with an additional
modification "\RemoveEmptyStaves".  This is basically a changed copy of
\Staff kept under a different name.  If you include this in a layout
definition, by virtue of having copied

  \name "Staff"

from the original definition of \Staff, LilyPond will know that this is
intended for overwriting the definition of \Staff.

Any changes made previously to \Staff after the definition of
RemoveEmptyStaffContext will be gone.  Broken by design, so it got
deprecated.  Perhaps we are not doing people a favor keeping it around.

> \RemoveEmptyStaffContext is deprecated and you will not find any entry
> about it in the NR of "2.14.2".
> Well, for reasons of compatibility you'll find the old definitions in
> engraver-init.ly, so I wonder why it doesn't work.

See above.

-- 
David Kastrup




reply via email to

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