lilypond-devel
[Top][All Lists]
Advanced

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

Re: Naming _another_ lacking puzzle piece


From: Benkő Pál
Subject: Re: Naming _another_ lacking puzzle piece
Date: Sat, 13 Oct 2012 09:05:31 +0200

2012/10/13 David Kastrup <address@hidden>:
>
> In ly/music-functions-init.ly I see code like the following:
>
> crossStaff =
> #(define-music-function (parser location notes) (ly:music?)
>   (_i "Create cross-staff stems")
>   #{
>   \override Stem #'cross-staff = #cross-staff-connect
>   \override Flag #'style = #'no-flag
>   $notes
>   \revert Stem #'cross-staff
>   \revert Flag #'style
> #})
>
> There is a problem with that: in terms of stack operations, \override
> and \revert are not opposing pairs: \override is pop+push (so that
> multiple overrides in a row don't accrue cruft), \revert is pop.  So the
> net effect of this sequence is "pop", while it should be neutral.
>
> In the Scheme layer, we have the distinction between
> make-grob-property-set (corresponding to user command \override, pop+push)
> make-grob-property-override (not available as user command, just push)
> make-grob-property-revert (corresponding to user command \revert, just pop)
>
> So we need something like
>
> crossStaff =
> #(define-music-function (parser location notes) (ly:music?)
>   (_i "Create cross-staff stems")
>   #{
>   \temporary\override Stem #'cross-staff = #cross-staff-connect
>   \temporary\override Flag #'style = #'no-flag
>   $notes
>   \revert Stem #'cross-staff
>   \revert Flag #'style
> #})
>
> and, as a corrollary, \temporary\whatever and \undo\whatever will be a
> proper push/pop pair.
>
> Now I find \temporary a fitting name.  It is just a bit cumbersome to
> type.  \interim is hardly shorter, \adhoc seems a bit less descriptive.
>
> Opinions?  It might also be possible to do
>
> \temporary { \override Stem #'cross-staff = #cross-staff-connect
>              \override Flag #'style = #'no-flag }
>            $notes
>
> and have this apply matching push/pop pairs around $notes.  It certainly
> would at least cater for the most common need of a non-first-popping
> push.  Perhaps we don't need both (at the current point of time, we
> don't have either, and the naming is inconsistent with
> make-grob-property-*), but as the crossStaff example shows, we need at
> least one of those options.

as a programmer I want a single push and wouldn't mind if pop+push
were two operations; I can't tell what a musician wants.

p



reply via email to

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