lilypond-devel
[Top][All Lists]
Advanced

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

Re: Add the command \offset to LilyPond (issue 8647044)


From: david . nalesnik
Subject: Re: Add the command \offset to LilyPond (issue 8647044)
Date: Thu, 25 Apr 2013 13:48:55 +0000


https://codereview.appspot.com/8647044/diff/5001/scm/music-functions.scm
File scm/music-functions.scm (right):

https://codereview.appspot.com/8647044/diff/5001/scm/music-functions.scm#newcode2103
scm/music-functions.scm:2103: ; head of the alist.  We reverse the alist
so our search will return
On 2013/04/23 22:09:04, dak wrote:
On 2013/04/23 20:24:57, dak wrote:


"If our search returns an anonymous procedure" is quite strained.  We
don't need
to _speculate_ about the identity of the anonymous procesure.  If we
want to be
sure, we can just remember it:

(define (offsetter property offsets)
   (define (self grob)

In view of the way offsetter is called, the first line of the above
would still need to be
(define ((offsetter property offsets) grob)

I see the value of the procedure recognizing itself, but I'm afraid I
don't understand how to implement this from the start you've given me.
Could you give me a further hint as to what

(define (self grob) ...

would contain?


and we can now check through both mutable and immutable grob
properties, find
self, and look behind self in the aliast to see whether we find
another
occurence of the property which, if found, we duly evaluate
recursively.  That
should allow multiple offsetter calls to work recursively.

Huh.  Maybe not the best idea since
\offset Y-offset ... Grob
\offset Y-offset ... Grob
would not accumulate while
\offset Y-offset ... Grob
\temporary\offset Y-offset ... Grob
or even
\offset Y-offset ... Grob
\once\offset Y-offset ... Grob
would.

But still seems better than forgetting all overrides except the first
one
(likely in the grob definition).

Accumulation of offsets, while nice in theory, does not seem to me to
have practical application.  (And its usage would lead to rather
confusing documentation, judging by the above.)

Here's an example of remembering which is already possible:
\relative c'' {
  c8 d e f
  \offset #'positions #'(-1 . -3) Beam
  c d e f
  \temporary \offset #'positions #'(-5 . -5) Beam
  c d e f
  \revert Beam.positions
  c d e f
}

In view of this, I could simply look for "self" at the head of the
properties alist and use that for comparison, rather than my opaque use
of procedure-name.

https://codereview.appspot.com/8647044/



reply via email to

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