Caio Giovaneti de Barros <caio.bar...@gmail.com> writes:

> Hello!
>
> I'm trying to build a function that creates a circled text of my
> choice using \markup and a bit of Scheme. So far what I have is:
>
> circled = #(define-music-function (parser location txt) (string?)
>
> #{ \markup { \circle #txt } #})
>
>
> \relative c' { c \circled #"1" }
>
>
>
> But when I run it with Lilypond 2.19.23 I get:
>
>
> In expression (value->lily-string m):
>
> /home/caio/lilypond/usr/share/lilypond/current/scm/ly-syntax-constructors.scm:33:14
> <1>: Unbound variable: value->lily-string

That is a bug.  LilyPond hits an internal error while trying to report
gogr.ly:6:18: error: music function cannot return \markup \line { \circle "1"}
\relative c' { c 
                 \circled #"1" }

> Version 2.18.2 gives me:
>
> music function cannot return (#<procedure line-markup (layout props
> args)> ((#<procedure circle-markup (layout props arg)> 1)))
>
> \relative c' { c
> \circled #"1" }

Same error, just not formatted as nice.

> What am I doing wrong?

A music function has to return music.  You return a markup.  You
probably want an event function here, and return #{ -\markup ... #}
(with the leading -, the markup turns into a text script).  You could
also just use the markup command and write

\relative c' { c-\markup \circle #"1" }

but apparently that's not what you want.

-- 
David Kastrup

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to