ADD_THIS_TRANSLATOR (Voice_devnull_engraver);
static char const *eat_spanners[] = {
- "beam-interface",
+ "beam",
+ "crescendo",
+ "decrescendo",
"slur",
- "tie",
- "dynamic-interface",
- "crescendo-interface",
0
};
&& (to_boolean (get_property ("unison"))
|| to_boolean (get_property ("unisilence")))))
{
- for (char const **p = eat_spanners; *p; p++)
+ if (Span_req *s = dynamic_cast <Span_req *> (m))
{
- if (Span_req *s = dynamic_cast <Span_req *> (m))
+ SCM t = s->get_mus_property ("span-type");
+
+ for (char const **p = eat_spanners; *p; p++)
{
- if (scm_equal_p (s->get_mus_property ("span-type"),
- ly_str02scm ( *p)) == SCM_BOOL_T)
- {
- return true;
- }
+ if (t == ly_str02scm (*p))
+ return true;
}
}
+ /* Ugh. Should eat other requests, script etc. too. */
+ else if (Tie_req *t = dynamic_cast<Tie_req*> (m))
+ return true;
}
return false;
}
static char const *junk_interfaces[] = {
-#if 1
"beam-interface",
-#endif
+ "dynamic-interface",
+ "hairpin-interface",
+ "multi-measure-rest-interface",
"script-interface",
"slur-interface",
- "tie-interface",
"text-interface",
"text-item-interface",
"text-script-interface",
- "dynamic-interface",
- "hairpin-interface",
"text-spanner-interface",
+ "tie-interface",
0
};
{
SCM s = get_property ("devNullVoice");
#if 0
- /* No need */
+ /* No need, next if will never be true */
if (s == ly_symbol2scm ("never"))
return;
#endif
for (char const **p = junk_interfaces; *p; p++)
if (i.elem_l_->has_interface (ly_symbol2scm (*p)))
{
+#if 0
+ /* Ugh: virtual mmrest::suicide () ? */
+ if (i.elem_l_->has_interface (ly_symbol2scm ("multi-measure-rest-interface")))
+ i.elem_l_->set_grob_property ("skip-timestep", SCM_BOOL_T);
+ else
+ ;
+#endif
+ /* Ugh, we can suicide them, but they remain living */
i.elem_l_->suicide ();
return;
}