Ajouter une propriété

Bonjour toute l'équipe,

Je travaille sur un morceau où il faut que je rajoute des propriétés supplémentaires à certains grobs pour partager des informations entre eux. Ça marche impeccablement, mais LilyPond me donne beaucoup de :

cannot find property type-check for `buddies' (backend-type?). perhaps a typing error?

(où `buddies' est la propriété que j'ai inventée - j'écris, par exemple, \once \override NoteHead #'buddies = #'(foo bar) dans le fichier .ly)

Le problème, c'est que j'utilise cette propriété partout, et la marée d'avertissements à son égard cache des fois des messages importants.
Est-ce qu'il y a une manière de faire taire LilyPond pour ce genre de manipulation (nouvelles propriétés) et/ou de rajouter la propriété à la liste des propriétés recevables ?

Cordialement,
~Mike

scm/define-grobs-properties.scm, non ?

Oui, mais j'essaie de ne pas modifier la copie de la source avec laquelle je travaille, histoire de ne pas joindre l'utile à l'agréable (et de ne pas effacer mes changements avec chaque mise à jour).
S'il faut le faire, je le ferai, mais je préférerais définir toutes les modifs dans les fichiers .ly eux-mêmes.

A+,
~Mike

···

On Oct 11, 2011, at 11:53 AM, Bertrand Bordage wrote:

scm/define-grobs-properties.scm, non ?

Justement, il y a tout ce qu'il faut dans define-grob-properties.scm. Un exemple :

#(define (define-grob-property symbol type? description)
(if (not (equal? (object-property symbol 'backend-doc) #f))
(ly:error (_ "symbol ~S redefined") symbol))

(set-object-property! symbol 'backend-type? type?)
(set-object-property! symbol 'backend-doc description)
symbol)

#(define-grob-property 'buddies list? "List of grobs")

{ \override StaffSymbol #'buddies = #'(clef note-head) a }

Chapeau !
J'ai essayé un truc comme ça dans un autre morceau quand j'étais bizut, mais j'ai dû faire une erreur dans la définition. Cet épisode m'a fortement découragé et je n'ai pas tenté ce genre de manip depuis.

~Mike

···

On Oct 11, 2011, at 12:06 PM, Bertrand Bordage wrote:

Justement, il y a tout ce qu'il faut dans define-grob-properties.scm. Un exemple :

#(define (define-grob-property symbol type? description)
  (if (not (equal? (object-property symbol 'backend-doc) #f))
      (ly:error (_ "symbol ~S redefined") symbol))

  (set-object-property! symbol 'backend-type? type?)
  (set-object-property! symbol 'backend-doc description)
  symbol)

#(define-grob-property 'buddies list? "List of grobs")

{ \override StaffSymbol #'buddies = #'(clef note-head) a }