Dear LilyPond devs,

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.

Can you help me where I misunderstand the code?

Thank you,

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

Reply via email to