- /* find the type of translator that we're changing.
-
- If \translator Staff = bass, then look for Staff = *
- */
- while (current && !current->is_alias (to_type))
- {
- last = current;
- current = current->get_parent_context ();
- }
-
- if (current && current->id_string () == to_id)
- {
- string msg;
- msg += _f ("can't change, already in translator: %s", to_id);
- }
-
- if (current)
- if (last)
- {
- Context *dest = 0;
- Context *where = get_outlet ();
- while (!dest && where)
- {
- dest = find_context_below (where, to_type, to_id);
- where = where->get_parent_context ();
- }
-
- if (dest)
- {
- send_stream_event (last, "ChangeParent", get_music ()->origin (),
- ly_symbol2scm ("context"), dest->self_scm ());
- }
- else
- /* FIXME: constant error message. */
- get_music ()->origin ()->warning (_ ("can't find context to switch to"));
- }
- else
- {
- /* We could change the current translator's id, but that would make
- errors hard to catch.
-
- last->translator_id_string () = get_change
- ()->change_to_id_string (); */
- error (_f ("not changing to same context type: %s", ly_symbol2string (to_type).c_str ()));
- }
- else
- /* FIXME: uncomprehensable message */
- error (_ ("none of these in my family"));