\version "2.19.16" #(define (grob-interface::info iface) (hashq-get-handle (ly:all-grob-interfaces) iface)) #(define (grob-interface::properties iface-info) (if iface-info (last iface-info) '())) #(define (grob-interface::pointers grob iface) (let* ((info (grob-interface::info iface)) (props (grob-interface::properties info)) (pointers (filter (lambda (prop) (let ((type (object-property prop 'backend-type?))) (or (eq? type ly:grob?) (eq? type ly:grob-array?)))) props))) (if (pair? pointers) (list iface (map (lambda (p) (list p (ly:grob-object grob p))) pointers)) '()))) #(define (grob::all-pointers grob) (let loop ((ifaces (ly:grob-interfaces grob)) (result '())) (if (null? ifaces) result (let ((entry (grob-interface::pointers grob (car ifaces)))) (if (pair? entry) (loop (cdr ifaces) (append result (list entry))) (loop (cdr ifaces) result)))))) #(define (display-pointers grob) (format #t "~%~y ~y~%" (grob::name grob) (grob::all-pointers grob))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% { \override NoteColumn.after-line-breaking = #display-pointers \arpeggio }