From 5a9595318419baf56186f7b5cd6043b9fe143959 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sat, 23 Dec 2006 22:32:04 +0100 Subject: [PATCH] cleanups; add warning if accidental order not found. --- lily/key-engraver.cc | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index 54c9832cc8..b317764fec 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -179,22 +179,30 @@ Key_engraver::read_event (Stream_event const *r) if (!scm_is_pair (p)) return; - SCM n = scm_list_copy (p); SCM accs = SCM_EOL; - for (SCM s = get_property ("keyAlterationOrder"); - scm_is_pair (s); s = scm_cdr (s)) + + SCM alist = scm_list_copy (p); + SCM order = get_property ("keyAlterationOrder"); + for (SCM s = order; + scm_is_pair (s) && scm_is_pair (alist); s = scm_cdr (s)) { - if (scm_is_pair (scm_member (scm_car (s), n))) + SCM head = scm_member (scm_car (s), alist); + + if (scm_is_pair (head)) { - accs = scm_cons (scm_car (s), accs); - n = scm_delete_x (scm_car (s), n); + accs = scm_cons (scm_car (head), accs); + alist = scm_delete_x (scm_car (head), alist); } } - for (SCM s = n; scm_is_pair (s); s = scm_cdr (s)) - if (ly_scm2rational (scm_cdar (s))) - accs = scm_cons (scm_car (s), accs); - + if (scm_is_pair (alist)) + { + r->origin ()->warning ("No ordering for key signature alterations"); + for (SCM s = alist; scm_is_pair (s); s = scm_cdr (s)) + if (ly_scm2rational (scm_cdar (s))) + accs = scm_cons (scm_car (s), accs); + } + context ()->set_property ("keySignature", accs); context ()->set_property ("tonic", r->get_property ("tonic")); -- 2.39.2