On 1 June 2011 20:31, Graham Percival <gra...@percival-music.ca> wrote:
> However, I'm confused/concerned about getting the text value of > text spanners. I'm currently doing: > > #(define (format-textspan engraver event) > (let* ((context (ly:translator-context engraver)) > (moment (ly:context-current-moment context)) > (spanner-props (ly:context-property context TextSpanner)) > (details (chain-assoc-get 'bound-details spanner-props)) > (left-props (assoc-get 'left details '())) > (left-text (assoc-get 'text left-props '()))) > (print-line engraver > "set_string" > (ly:event-property event 'span-direction) > left-text))) > > which uses the engraver. I couldn't see any event-specific way to > get the text of a text spanner -- the information appears to exist > on the engraver level only. Hmm, this is one situation where listening to events isn't as user-friendly. The event for a text spanner doesn't carry the text info since it's applied via an override (a separate event class). You'd need to listen for overrides and check the symbol being set (which is the grob the override's applied to): \version "2.15.0" listen = #(define-music-function (parser location music) (ly:music?) (define (add-stream-listener global listener . types) (apply ly:add-listener (cons* listener (ly:context-events-below global) types)) global) (define (process-event event) (case (ly:event-property event 'class) ((text-span-event) (newline) (display (ly:event-property event 'span-direction))) ((Override) (newline) (display (ly:event-property event 'symbol))))) (let* ((global (ly:make-global-context $defaultlayout)) (listener (ly:make-listener process-event)) (global-disp (ly:context-events-below global))) (ly:connect-dispatchers (ly:make-dispatcher) global-disp) (add-stream-listener global listener 'StreamEvent) (ly:interpret-music-expression music global) music)) \listen \relative c' { \override TextSpanner #'(bound-details left text) = #"foo" c1\startTextSpan c1\stopTextSpan } Cheers, Neil _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel