Hello Alec, note that since 2.24 we have a neat markup function \with-string-transformer, which is called whenever a string is found, and does a lot of the logic for you (such as making sure this is called upon a string, not a complex markup:
\markup
\with-string-transformer
#(lambda (layout props str)
(if (> (string-length str) 0)
(let ((last-char (string-ref str (1- (string-length str))))
(prefix (substring str 0 (1- (string-length str)))))
(cond
((char=? last-char #\#)
(markup
#:concat (prefix #:hspace 0.2 #:fontsize -2.5 #:raise 0.6
#:sharp)))
((char=? last-char #\b)
(markup
#:concat (prefix #:hspace 0.2 #:fontsize -2.5 #:raise 0.6
#:flat)))
(else str)))
str))
{ "A#" "Bb" }
But then I’d think maybe here it would be useful to have an option for regex
matching in \replace ...
Cheers,
Valentin
signature.asc
Description: This is a digitally signed message part.
