Thomas Morley <thomasmorle...@gmail.com> writes: > 2018-02-03 23:21 GMT+01:00 David Kastrup <d...@gnu.org>: > >> >> Ok, then it's the primitive-eval crapping out. parser.yy has >> >> | markup_mode_word '=' identifier_init >> { >> if (scm_is_false (Lily::markup_function_p ($3))) >> { >> parser->parser_error (@3, _ ("Not a markup >> function")); >> } else { >> scm_primitive_eval >> (scm_list_3 >> (Lily::define_markup_command, >> scm_string_to_symbol ($1), >> ly_quote_scm ($3))); >> } >> $$ = SCM_UNSPECIFIED; >> } >> ; >> >> So basically > > Compiling a file with nothing else then: > >> #(primitive-eval (list define-markup-command 'bold-red >> #{ \markup \bold \with-color #red \etc #})) > > returns: > > error: GUILE signaled an error for the expression beginning here > # > (primitive-eval (list define-markup-command 'bold-red > source expression failed to match any pattern > fatal error: failed files: "atest-70.ly"
Ugh. Ok, I think I got this. I'll split define-markup-command into a macro just calling an internal function, and I'll use the internal function inside of the parser. Calling macros from C++ seems to be a bad idea. -- David Kastrup _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel