Displaying all grob properties and their actual values
Appearance
Sometimes you may want to know all properties and their values for a certain grob. The here provided function is a possibility. Afaict, following comment is not true (any more?), will delete soon --Harm: Known limitation: it doesn't work for NoteHead. The output (written to stdout) is something like the following.
#<Grob ChordName >:
GROB-INTERFACE
X-extent:
(0.0 . 5.087352755905512)
...
...
CHORD-NAME-INTERFACE
begin-of-line-visible:
()
FONT-INTERFACE
font:
((typewriter . LilyPond Monospace) (sans . LilyPond Sans Serif) ...)
font-encoding:
()
...
...
for the example below.
\version "2.24"
#(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
}