#(define (supported-properties iface) (let ((iface-info (hashq-get-handle (ly:all-grob-interfaces) iface))) (last iface-info))) #(define print-all-grob-properties-key-values (grob-transformer 'after-line-breaking (lambda (grob orig) (let ((ifaces (assoc-get 'interfaces (ly:grob-property grob 'meta)))) (format #t "\n~a:\n" grob) (for-each (lambda (iface) (format #t "\n~a\n" (string-upcase (symbol->string iface))) (for-each (lambda (p) (format #t "\n\t~a:\n\t~a" p (if (eq? p 'after-line-breaking) orig (ly:grob-property grob p)))) (supported-properties iface))) ifaces) orig)))) grobPropertiesInfo = #(define-music-function (grob-name)(symbol?) #{ \override $grob-name . after-line-breaking = #print-all-grob-properties-key-values #}) \new ChordNames \chordmode { \grobPropertiesInfo #'ChordName c1:m7 }