In the following lilypond code, why is the value of the scheme variable
dirn not being changed by the set! command in the updown function? The
updown function is called on the first line of beginStringNum, and here
returns the value DOWN, as shown by the TextSpanner appearing below the
staff, but when I use dirn further on in beginStringNum, for tweaking
the value of bound-details.right.text, the value that gets used is 1 and
not -1, as shown by the direction of the vertical line at the RH end of
the spanner.
If I open a Lilypond Scheme sandbox and do the same - create a global
variable and a function that sets it, then the variable has the new
value after the function call:
%================
\version "2.17.6"
#(define dirn 1)
#(define (updown grob)
(let ((ud (ly:event-property (event-cause grob) 'direction)))
(if (eq? -1 ud)
(begin
(set! dirn DOWN)
DOWN)
UP)))
beginStringNum = #(define-event-function (parser location strng)
(number?)
#{
\tweak direction #updown
\tweak bound-details.left.text \markup\bold\teeny\concat
{ \circle { \finger #(number->string strng) } \char ##x2006 }
\tweak font-shape #'upright
\tweak bound-details.left.stencil-align-dir-y #CENTER
\tweak dash-period #0.8
\tweak dash-fraction #0.6
\tweak thickness #0.8
\tweak bound-details.right.text \markup {
\draw-line #(cons 0 (/ dirn -2)) }
\tweak bound-details.left.padding #0.25
\tweak bound-details.right.padding #-1
\tweak bound-details.right-broken.padding #0.5
\tweak bound-details.left-broken.padding #2
\tweak bound-details.left-broken.text ##f
\tweak bound-details.right-broken.text ##f
\startTextSpan
#}
)
endStringNum = \stopTextSpan
\relative c {
\clef "treble_8"
c4_\beginStringNum 5 c c \times 2/3 { c8 c c\endStringNum }
}
%================
nick@nick-mint ~ $ lilypond scheme-sandbox
GNU LilyPond 2.17.9
Processing
`/usr/local/lilypond/usr/share/lilypond/current/ly/scheme-sandbox.ly'
Parsing...
guile> (define x 1)
guile> (define (b y)
(set! x y))
guile> (display x)
1guile> (b 14)
guile> (display x)
14guile>
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user