Hi,

Here's a patch which makes sure that there's a check that an engraver
exists before an attempt is made to remove it within a \with block.

There are two related issues which I'm concerned about:

- Should an unknown engraver cause compilation to fail? I was
wondering whether it might be better to issue a warning rather than an
error in get_translator ().

- There's a redundant error message in Context_def::add_context_mod
(); it never gets called, since compilation stops in get_translator
():

if (!get_translator (sym))
  error (_f ("program has no such type: `%s'", ly_symbol2string
(sym).c_str ()));

Regards,
Neil
From 78c462d30e23ec7b5e0f3a3f3329aef31fa23ecb Mon Sep 17 00:00:00 2001
From: Neil Puttock <[EMAIL PROTECTED]>
Date: Fri, 15 Aug 2008 17:40:16 +0100
Subject: [PATCH] Fix #655.

---
 lily/context-def.cc |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/lily/context-def.cc b/lily/context-def.cc
index a810159..6bb2fbd 100644
--- a/lily/context-def.cc
+++ b/lily/context-def.cc
@@ -265,7 +265,8 @@ Context_def::get_translator_names (SCM user_mod) const
 
       if (ly_symbol2scm ("consists") == tag)
 	l1 = scm_cons (arg, l1);
-      else if (ly_symbol2scm ("remove") == tag)
+      else if (ly_symbol2scm ("remove") == tag
+	       && get_translator (arg))
 	l1 = scm_delete_x (arg, l1);
     }
 
-- 
1.5.4.3

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

Reply via email to