2013/8/19 Mark Polesky <markpole...@yahoo.com>: > I'm trying to retrieve the value of > LedgerLineSpanner.length-fraction from within a NoteHead > callback, and I can't figure it out. Is there a way? > > Thanks. > - Mark > > _______________________________________________ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user
Hi Mark, a quick shot, seems to work, though: \version "2.17.24" #(define (look-up-for-parent name-symbol axis grob) " Return the parent of @var{grob}, specified by it's @var{name-symbol} in axis @var{axis}. If not found, look up for the next parent. " (let* ((parent (ly:grob-parent grob axis)) (grob-name (lambda (x) (assq-ref (ly:grob-property x 'meta) 'name)))) (cond ((not (ly:grob? parent)) (ly:error (_"Perhaps typing error for \"~a\" or \"~a\" is not in the parent-tree.") name-symbol name-symbol)) ((not (equal? name-symbol (grob-name parent))) (look-up-for-parent name-symbol axis parent)) (else parent)))) #(define (read-out l1 l2) (define (helper ls1 ls2 ls3) "Filters all elements of ls1 from ls2 by their grob-name and appends it to ls3" (let ((grob-name-proc (lambda (x) (assq-ref (ly:grob-property x 'meta) 'name)))) (if (null? ls1) ls3 (helper (cdr ls1) ls2 (append ls3 (filter (lambda (x) (eq? (car ls1) (grob-name-proc x))) ls2)))))) (helper l1 l2 '())) foo = \override NoteHead.before-line-breaking = #(lambda (grob) (let* ((sys (look-up-for-parent 'System X grob)) (all (ly:grob-array->list (ly:grob-object sys 'all-elements))) (llsp (read-out '(LedgerLineSpanner) all)) (l-f (ly:grob-property (car llsp) 'length-fraction))) (display l-f) )) { \foo a' } HTH, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user