+ SCM entry = scm_assoc (sym, alist);
+ if (scm_is_pair (entry))
+ g->internal_set_property (sym, scm_cdr (entry));
+ }
+}
+
+/* Add the properties, one by one for each Script. A little memory
+ could be saved by tacking the props onto the Script grob (i.e. make
+ ScriptStaccato , ScriptMarcato, etc. ).
+*/
+void make_script_from_event (Grob *p, bool *follow, Context *tg,
+ SCM art_type, int index)
+{
+ SCM alist = tg->get_property ("scriptDefinitions");
+ SCM art = scm_assoc (art_type, alist);
+
+ if (art == SCM_BOOL_F)
+ {
+ /* FIXME: */
+ warning (_ ("don't know how to interpret articulation: "));
+ warning (_ ("scheme encoding: "));
+ scm_write (art_type, scm_current_error_port ());
+ message ("");
+ return;
+ }
+
+ art = scm_cdr (art);
+
+ SCM follow_scm = scm_assoc (ly_symbol2scm ("follow-into-staff"),
+ art);
+
+ *follow = scm_is_pair (follow_scm) && to_boolean (scm_cdr (follow_scm));
+ bool priority_found = false;
+
+ for (SCM s = art; scm_is_pair (s); s = scm_cdr (s))
+ {
+ SCM sym = scm_caar (s);
+ SCM type = scm_object_property (sym, ly_symbol2scm ("backend-type?"));
+ if (!ly_c_procedure_p (type))
+ continue;
+
+ SCM val = scm_cdar (s);