+
+ if (extra_token && SCM_VALUESP (sval))
+ {
+ sval = scm_struct_ref (sval, SCM_INUM0);
+
+ if (scm_is_pair (sval)) {
+ for (SCM p = scm_reverse (scm_cdr (sval));
+ scm_is_pair (p);
+ p = scm_cdr (p))
+ {
+ SCM v = scm_car (p);
+ if (Music *m = Music::unsmob (v))
+ {
+ if (!Input::is_smob (m->get_property ("origin")))
+ m->set_spot (override_input (here_input ()));
+ }
+
+ int token;
+ switch (extra_token) {
+ case '$':
+ token = scan_scm_id (v);
+ if (!scm_is_eq (yylval, SCM_UNSPECIFIED))
+ push_extra_token (here_input (),
+ token, yylval);
+ break;
+ case '#':
+ push_extra_token (here_input (),
+ SCM_IDENTIFIER, v);
+ break;
+ }
+ }
+ sval = scm_car (sval);
+ } else
+ sval = SCM_UNSPECIFIED;
+ }
+
+ if (Music *m = Music::unsmob (sval))
+ {
+ if (!Input::is_smob (m->get_property ("origin")))
+ m->set_spot (override_input (here_input ()));
+ }
+