+void
+Phrasing_slur_engraver::acknowledge_tie (Grob_info info)
+{
+ acknowledge_extra_object (info);
+}
+
+void
+Phrasing_slur_engraver::acknowledge_tuplet_number (Grob_info info)
+{
+ acknowledge_extra_object (info);
+}
+
+void
+Phrasing_slur_engraver::acknowledge_slur (Grob_info info)
+{
+ acknowledge_extra_object (info);
+}
+
+void
+Phrasing_slur_engraver::finalize ()
+{
+ if (slurs_.size ())
+ slurs_[0]->warning (_ ("unterminated phrasing slur"));
+}
+
+void
+Phrasing_slur_engraver::process_music ()
+{
+ if (events_[STOP])
+ {
+ end_slurs_ = slurs_;
+ slurs_.clear ();
+ }
+
+ if (events_[START] && slurs_.empty ())
+ {
+ Stream_event *ev = events_[START];
+
+ Grob *slur = make_spanner ("PhrasingSlur", events_[START]->self_scm ());
+ Direction updown = to_dir (ev->get_property ("direction"));
+ if (updown)
+ set_grob_direction (slur, updown);
+
+ slurs_.push_back (slur);
+ }
+}
+
+void
+Phrasing_slur_engraver::stop_translation_timestep ()
+{
+ end_slurs_.clear ();
+ events_[START] = events_[STOP] = 0;
+}
+
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, accidental);
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, fingering)
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, note_column);
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, slur);
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, script);
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, text_script);
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, tie);
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, tuplet_number);
+
+ADD_TRANSLATOR (Phrasing_slur_engraver,
+ /* doc */
+ "Print phrasing slurs. Similar to @ref{Slur_engraver}.",
+
+ /* create */
+ "PhrasingSlur ",