2012/5/23 David Kastrup <d...@gnu.org>: > Thomas Morley <thomasmorle...@googlemail.com> writes: > >> #(define all-custom-grob-descriptions >> (for-each >> (lambda (x) >> (let ((interfaces >> (ly:assoc-get 'interfaces >> (ly:assoc-get 'meta >> (cdr x))))) >> (set! interfaces (append! interfaces '(grob-marker-interface))))) >> all-grob-descriptions)) > > It is probably tiresome of me to point this out, but tampering with the > global internal data structures of LilyPond is not a good idea since it > means that in > > lilypond file1.ly file2.ly > > the output for file2 is no longer independent from what happens in > file1. So instead of making a fake "all-custom-grob-description" > definition that is actually not used, but as a side-effect replaces the > existing internals, maybe consider actually creating a separate modified > copy and use \grobdescriptions to embed it in the Global context used in > this file. > > -- > David Kastrup
Hi David, sorry for that. It was a copy/paste-error. Actually, I don't want to define a new grob, only new properties. The foolowing seems to be ok, or not? \version "2.15.38" #(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) #(map (lambda (x) (apply define-grob-property x)) `( (marker ,symbol? "Marker in grob for function-call") )) \relative c' { c1 \override Staff.BarLine #'after-line-breaking = #(lambda (grob) (let ((xy (ly:grob-property grob 'marker))) (newline)(display xy))) d \override Staff.BarLine #'marker = #'foo e } -Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user