+void
+My_lily_lexer::add_scope (SCM module)
+{
+ ly_reexport_module (scm_current_module());
+ scm_set_current_module (module);
+ for (SCM s = scopes_; gh_pair_p (s); s = gh_cdr (s))
+ {
+ /*
+ UGH. how to do this more neatly?
+ */
+ SCM expr = scm_list_n (ly_symbol2scm ("module-use!"),
+ module, scm_list_n (ly_symbol2scm ("module-public-interface"),
+ gh_car (s), SCM_UNDEFINED),
+ SCM_UNDEFINED);
+
+ scm_primitive_eval(expr);
+ }
+
+ scopes_ = scm_cons (module, scopes_);
+}
+
+SCM
+My_lily_lexer::remove_scope ()
+{
+ SCM sc = gh_car (scopes_);
+ scopes_ = gh_cdr (scopes_);
+ scm_set_current_module (gh_car (scopes_));
+
+ return sc;
+}
+
+