Hi,
sorry for the messed-up formatting. I try again:
This is probably a very stupid question.
During my work on updating blackmensural.ly I had to deal with custom
grob and context properties. The original source for 2.12 did the following:
%% ===============================================
% declaring some custom properties
%% ===============================================
%% custom NoteHead property, for \override-able notehead style definitions
#(set-object-property! 'mensural_glyphs 'backend-type? list?)
#(set-object-property! 'mensural_glyphs 'backend-doc "current set of
mensural display settings")
%% custom Voice context property, needed for ligature assembly
#(set-object-property! 'mensural_ligature_queue 'backend-type? list?)
#(set-object-property! 'mensural_ligature_queue 'backend-doc "current
set of note grobs to be assembled into a ligature")
#(set-object-property! 'mensural_accidentals_queue 'backend-type? list?)
#(set-object-property! 'mensural_accidentals_queue 'backend-doc "current
set of accidentals to be collected for a ligature")
%% custom entry in an event's 'tweak property
#(set-object-property! 'mensural_tags 'backend-type? list?)
#(set-object-property! 'mensural_tags 'backend-doc "various tags set in
a notehead tweak to control mensural note display")
The actual code then accessed
a) mensural_glyphs with what amounts to \override
NoteHead.mensural_glyphs = ...
b) mensural_ligature_queue with (ly:context-property some-context
'mensural_ligature_queue) and (what amounts to) \set
mensural_ligature_queue = ...
c) mensural_tags with (ly:grob-property some-note 'mensural_tags) (and
in a tweak).
Part b) failed with current LilyPond: "can't find property type-check
for `instrument' (translation-type?)" (I'm not sure if a) and c) work or
just were not being in an active code path).
Now, looking at scm/define-context-properties.scm and
scm/define-grob-properties.scm that there seems to be a distinction:
- Context properties (\set'table) are defined via (set-object-property!
symbol 'translation-type? type?)
- Grob properties (\override'able) are defined via (set-object-property!
symbol 'backend-type? type?)
Is this correct? And if so, when did this change between 2.12 and 2.22,
seeing as the above code seems to have worked in 2011? It works fine in
2.22 if I define mensural_ligature_queue using 'translation-type?
Lukas