Hi Carl,
Am Mo., 26. Okt. 2020 um 23:04 Uhr schrieb Carl Sorensen <c_sorensen@byu.edu>:
>
> Try this:
> \defineBarLine ".|:-|." #'("|." ".|:" "")
Though, \defineBarLine ".|:-|." #'("|." ".|:" #f) _should_ work as well.
It's a bug in 'ly:bar-line::calc-anchor' in bar-line.scm, triggered by
the RehearsalMark requiring an anchor.
The anchor-calculating procedure compares the span-glyph using
string=? which bombs out if span-glyph is not a string.
One should likely use equal? here.
Thanks, Harm! Sometimes it's almost as good to be lucky as to be good. You are absolutely right, of course, and were I not too lazy to do so, I'd have looked up the line where the actual error was. Instead I just saw that #f didn't work, so I changed to "",
Also, Mike, while my comment about \define always going at the top level, that same thing is NOT true in general for functions of the form \defineXXX. I can't think of any cases where it causes problems to put them at the top level. But it's not strictly required, and the use of \defineBarLine inside the music _expression_ was not the cause of the errors.
I just wanted to clear up my possibly confusing statement.
Thanks,
Carl