- figure_ = new Item (get_property ("BassFigure"));
- SCM l = SCM_EOL;
-
- for (int i = 0; i <figures_.size (); i++)
- l = gh_cons (figures_[i]->self_scm(), l);
- figure_->set_grob_property ("causes", l);
-
- announce_grob(figure_, figures_[0]->self_scm()); // todo
+ SCM proc = get_property ("bassFigureFormatFunction");
+ if (ly_c_procedure_p (proc))
+ {
+ SCM l = SCM_EOL;
+ SCM *t = &l;
+ for (int i = 0; i < figures_.size (); i++)
+ {
+ *t = scm_cons (figures_[i]->self_scm (), SCM_EOL);
+ t = SCM_CDRLOC (*t);
+ }
+ figure_ = make_item ("BassFigure", figures_[0]->self_scm ());
+ scm_call_3 (proc, l, context ()->self_scm (),
+ figure_->self_scm ());
+ }