On 22.01.2016 16:30, Simon Albrecht wrote:
Oops, there was an else-statement missing.

And it didn’t work with rests. I forgot to test the code on a real score before posting…

%%%%%%%%%%%%%%%
#(define crop-outside-staff-stem
   (lambda (grob)
     (let* ((note-col (ly:grob-parent grob 0))
            (note-heads (ly:grob-object note-col 'note-heads))
            (has-note-head? (not (eq? note-heads '()))))
       (if has-note-head?
(let* ((note-head (ly:grob-array-ref note-heads 0)) ; we don’t have chords anyway
                   (staff-pos (ly:grob-staff-position note-head))
                   (stem-len (ly:grob-property grob 'length))
                   (delta (case (abs staff-pos)
                            ((3) -0.3)
                            ((2) -1)
                            ((1) -1.5)
                            ((0) -1.8)
                            (else 0))))
             (ly:grob-set-property! grob 'length (+ stem-len delta)))))))
%%%%%%%%%%%%

Best, Simon

_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to