X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fparse-scm.cc;h=576591dc97265e2a77dd93bcfa7c61b7ee48ecba;hb=5d84bfad4626892bcffd05adcced53c8a2329047;hp=08c67cc17f4a0571a184ff7ef627292eacf5545c;hpb=958e95822083954cad00e0a598eb9f12ceba67b9;p=lilypond.git diff --git a/lily/parse-scm.cc b/lily/parse-scm.cc index 08c67cc17f..576591dc97 100644 --- a/lily/parse-scm.cc +++ b/lily/parse-scm.cc @@ -28,6 +28,7 @@ using namespace std; #include "main.hh" #include "paper-book.hh" #include "source-file.hh" +#include "lily-imports.hh" /* Pass string to scm parser, read one expression. Return result value and #chars read. @@ -94,15 +95,9 @@ internal_ly_eval_scm (Parse_start *ps) static SCM module = SCM_BOOL_F; if (scm_is_false (module)) { - SCM function = ly_lily_module_constant ("make-safe-lilypond-module"); - module = scm_gc_protect_object (scm_call_0 (function)); + module = scm_gc_protect_object (Lily::make_safe_lilypond_module ()); } - // We define the parser so trusted Scheme functions can - // access the real namespace underlying the parser. - if (ps->parser_) - scm_module_define (module, ly_symbol2scm ("parser"), - ps->parser_->self_scm ()); return scm_eval (ps->form_, module); } return scm_primitive_eval (ps->form_); @@ -125,7 +120,8 @@ parse_handler (void *data, SCM /*tag*/, SCM args) { Parse_start *ps = (Parse_start *) data; - ps->location_.error (_ ("GUILE signaled an error for the expression beginning here")); + ps->location_.non_fatal_error + (_ ("GUILE signaled an error for the expression beginning here")); if (scm_ilength (args) > 2) scm_display_error_message (scm_cadr (args), scm_caddr (args), scm_current_error_port ()); @@ -178,11 +174,9 @@ ly_eval_scm (SCM form, Input i, bool safe, Lily_parser *parser) { Parse_start ps (form, i, safe, parser); - SCM ans = scm_c_with_fluids - (scm_list_2 (ly_lily_module_constant ("%parser"), - ly_lily_module_constant ("%location")), - scm_list_2 (parser->self_scm (), - i.smobbed_copy ()), + SCM ans = scm_c_with_fluid + (Lily::f_location, + i.smobbed_copy (), parse_protect_global ? protected_ly_eval_scm : catch_protected_eval_body, (void *) &ps);