From d6a70b0d29c31d0b24a53c978c8844bbb640cdbd Mon Sep 17 00:00:00 2001
From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Mon, 25 Sep 2006 00:58:56 +0000
Subject: [PATCH] * ly/engraver-init.ly: set ignoreFiguredBassRest in Staff
 context.

* lily/figured-bass-engraver.cc: only listen to rest events if
ignoreFiguredBassRest is not set.

* scm/define-context-properties.scm
(all-user-translation-properties): add ignoreFiguredBassRest
---
 ChangeLog                         | 10 ++++++++++
 lily/figured-bass-engraver.cc     | 12 +++++++++---
 ly/engraver-init.ly               |  1 +
 scm/define-context-properties.scm |  1 +
 4 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f8beb8bc6c..691352ad7c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-09-25  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+	* ly/engraver-init.ly: set ignoreFiguredBassRest in Staff context.
+
+	* lily/figured-bass-engraver.cc: only listen to rest events if
+	ignoreFiguredBassRest is not set.
+
+	* scm/define-context-properties.scm
+	(all-user-translation-properties): add ignoreFiguredBassRest
+
 2006-09-24  Joe Neeman  <joeneeman@gmail.com>
 
 	* lily/paper-book.cc (get_system_specs):
diff --git a/lily/figured-bass-engraver.cc b/lily/figured-bass-engraver.cc
index a300df86d4..cf3e418883 100644
--- a/lily/figured-bass-engraver.cc
+++ b/lily/figured-bass-engraver.cc
@@ -129,6 +129,7 @@ Figured_bass_engraver::start_translation_timestep ()
   new_events_.clear ();
   for (vsize i = 0; i < groups_.size (); i++)
     groups_[i].current_event_ = 0;
+
   continuation_ = false;
 }
 
@@ -136,8 +137,11 @@ IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, rest);
 void
 Figured_bass_engraver::listen_rest (Stream_event *ev)
 {
-  new_event_found_ = true;
-  ASSIGN_EVENT_ONCE (rest_event_, ev);
+  if (to_boolean (get_property ("ignoreFiguredBassRest")))
+    {
+      new_event_found_ = true;
+      ASSIGN_EVENT_ONCE (rest_event_, ev);
+    }
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, bass_figure);
@@ -476,7 +480,8 @@ ADD_TRANSLATOR (Figured_bass_engraver,
 		"BassFigureLine "
 		,
 		/* accept */
-		"bass-figure-event rest-event",
+		"bass-figure-event "
+		"rest-event",
 
 		/* read */
 		"figuredBassAlterationDirection "
@@ -484,6 +489,7 @@ ADD_TRANSLATOR (Figured_bass_engraver,
 		"figuredBassFormatter "
 		"implicitBassFigures "
 		"useBassFigureExtenders "
+		"ignoreFiguredBassRest "
 		,
 
 		/* write */
diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly
index 41a99b6198..61bd5d7504 100644
--- a/ly/engraver-init.ly
+++ b/ly/engraver-init.ly
@@ -46,6 +46,7 @@
   verticalExtent = ##f 
   localKeySignature = #'()
   createSpacing = ##t
+  ignoreFiguredBassRest = ##t 
   
   %% explicitly set instrument, so we don't get 
   %% weird effects when doing instrument names for
diff --git a/scm/define-context-properties.scm b/scm/define-context-properties.scm
index 7e2aca836c..7aa2fce123 100644
--- a/scm/define-context-properties.scm
+++ b/scm/define-context-properties.scm
@@ -251,6 +251,7 @@ get accidentals.")
 highest pitch on the instrument. This used by the automatic string
 selector for tab notation.")
 
+     (ignoreFiguredBassRest ,boolean? "Don't swallow rest events.")
      (ignoreBarChecks ,boolean? "Ignore bar checks")
      (ignoreMelismata ,boolean? "Ignore melismata for this @internalsref{Lyrics} line.")
 
-- 
2.39.5