Am Fr., 2. Dez. 2022 um 11:46 Uhr schrieb Jean Abou Samra <j...@abou-samra.fr>:
>
> Le 02/12/2022 à 05:16, Abraham Lee a écrit :
> > Code works perfectly, Jean, though what it's doing is a bit of a
> > mystery. You've been very kind to provide a solution and I don't want
> > to take more of your time on the subject, but is there some
> > documentation somewhere that explains that commands you've used so I
> > can figure out what's going on for myself? Or if the explanation is
> > simple, I'd greatly appreciate it so I can stop using
> > before/after-line-breaking since I used to use it a lot (as Thomas has
> > hinted at).
>
>
> Try reading this, and feel free to ask again if this doesn't clarify it
> for you:
>
> https://extending-lilypond.readthedocs.io/en/latest/backend.html#properties-and-callbacks
>
> Best,
> Jean
>
Hi Jean,

we have a very short section about grob-transformer in the Extending
Manual. Probably too concise.
Your text is more clear.
Many thanks again for the entire text!

I know you like pattern matching, though imho it makes things not
always easier for users.

Even for me - I don't understand that (x x)-line:

       \override Arpeggio.positions =
         #(grob-transformer
           'positions
           (lambda (grob original)
             (match original
               ((a . b) (cons (- a 5.0) (+ b 5.0)))
               (x x))))  ;; <==

I'd likely code it like:
       \override Arpeggio.positions =
         #(grob-transformer
           'positions
           (lambda (grob original)
             (cons (- (car original) 5.0) (+ (cdr original) 5.0))))

Best,
  Harm

Reply via email to