This admits key lists containing non-negative numbers into various
syntactic constructs previously using symbol lists.
extern Variable hash_table_to_alist;
extern Variable interpret_markup_list;
extern Variable invalidate_alterations;
extern Variable hash_table_to_alist;
extern Variable interpret_markup_list;
extern Variable invalidate_alterations;
+ extern Variable key_p;
+ extern Variable key_list_p;
extern Variable key_signature_interface_alteration_positions;
extern Variable layout_extract_page_properties;
extern Variable lilypond_main;
extern Variable key_signature_interface_alteration_positions;
extern Variable layout_extract_page_properties;
extern Variable lilypond_main;
Variable hash_table_to_alist ("hash-table->alist");
Variable interpret_markup_list ("interpret-markup-list");
Variable invalidate_alterations ("invalidate-alterations");
Variable hash_table_to_alist ("hash-table->alist");
Variable interpret_markup_list ("interpret-markup-list");
Variable invalidate_alterations ("invalidate-alterations");
+ Variable key_p ("key?");
+ Variable key_list_p ("key-list?");
Variable key_signature_interface_alteration_positions ("key-signature-interface::alteration-positions");
Variable layout_extract_page_properties ("layout-extract-page-properties");
Variable lilypond_main ("lilypond-main");
Variable key_signature_interface_alteration_positions ("key-signature-interface::alteration-positions");
Variable layout_extract_page_properties ("layout-extract-page-properties");
Variable lilypond_main ("lilypond-main");
symbol_list_part:
symbol_list_element
{
symbol_list_part:
symbol_list_element
{
- $$ = try_string_variants (Lily::symbol_list_p, $1);
+ $$ = try_string_variants (Lily::key_list_p, $1);
- parser->parser_error (@1, _("not a symbol"));
+ parser->parser_error (@1, _("not a key"));
$$ = SCM_EOL;
} else
$$ = scm_reverse ($$);
$$ = SCM_EOL;
} else
$$ = scm_reverse ($$);
symbol_list_element:
STRING
| embedded_scm_bare
symbol_list_element:
STRING
| embedded_scm_bare
*destination = unsmob<Score> (sid)->clone ()->unprotect ();
return SCM_IDENTIFIER;
} else if (scm_is_pair (sid)
*destination = unsmob<Score> (sid)->clone ()->unprotect ();
return SCM_IDENTIFIER;
} else if (scm_is_pair (sid)
- && scm_is_pair (scm_car (sid))
- && scm_is_symbol (scm_caar (sid))) {
+ && scm_is_true (Lily::key_list_p (sid))) {
*destination = sid;
return LOOKUP_IDENTIFIER;
}
*destination = sid;
return LOOKUP_IDENTIFIER;
}
if (scm_is_true (scm_call_1 (pred, str)))
return str;
// a symbol may be interpreted as a list of symbols if it helps
if (scm_is_true (scm_call_1 (pred, str)))
return str;
// a symbol may be interpreted as a list of symbols if it helps
- if (scm_is_symbol (str)) {
+ if (scm_is_true (Lily::key_p (str))) {
str = scm_list_1 (str);
if (scm_is_true (scm_call_1 (pred, str)))
return str;
str = scm_list_1 (str);
if (scm_is_true (scm_call_1 (pred, str)))
return str;