I have a problem with the LilyPond markup parsing, which prevents me to finish my new release of LilyPondTool. Could you help me a bit on that?
I have this ly file ------------------
dot = \markup { "q" \musicglyph #"accordion.dot" }
{ c^\dot } ------------------
When the markup is parsed, it will become: ( "q" (musicglyph "accordion.dot"))
through the rules: markup_braced_list -> markup_list -> markup_top -> full_markup -> identifier_init
This really makes sense, but please correct me if I'm wrong.
Now when I'm referring to it in c^\dot, the following code is run:
if (Text_interface::is_markup (sid)) { .... return MARKUP_IDENTIFIER; } else if (Text_interface::is_markup_list (sid)) { .... return MARKUPLINES_IDENTIFIER; }
The result of this must be MARKUP_IDENTIFIER (as only those can be used as direction_reqd_event -> gen_text_def -> full_markup
But if I look in Text_interface.isMarkup, it will just do the following:
return (scm_is_string (x) || (scm_is_pair (x) && SCM_BOOL_F != scm_object_property (scm_car (x),
ly_symbol2scm ("markup-signature")))); } So my value, ( "q" (musicglyph "accordion.dot")) will not be considered as a markup, but instead a markup list, so I'm getting a parse error.