X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Flily-parser.cc;h=eb59e7bda331038f4c7d1ad7f695ae64831f39a3;hb=9a2ec61184ccd4598312ce81cf9638ac1784d1f5;hp=7e414916654ae9c3bc721637dc24b7bebeec0320;hpb=e94023d1eda0a28353d75718d685bffb0134f347;p=lilypond.git diff --git a/lily/lily-parser.cc b/lily/lily-parser.cc index 7e41491665..eb59e7bda3 100644 --- a/lily/lily-parser.cc +++ b/lily/lily-parser.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2007 Han-Wen Nienhuys + (c) 1997--2009 Han-Wen Nienhuys Jan Nieuwenhuizen */ @@ -22,7 +22,6 @@ #include "parser.hh" #include "score.hh" #include "sources.hh" -#include "text-metrics.hh" #include "warn.hh" #include "program-option.hh" @@ -87,9 +86,6 @@ Lily_parser::print_smob (SCM s, SCM port, scm_print_state*) void Lily_parser::parse_file (string init, string name, string out_name) { - if (get_output_backend_name () == "tex") - try_load_text_metrics (out_name); - // TODO: use $parser lexer_->set_identifier (ly_symbol2scm ("parser"), self_scm ()); output_basename_ = out_name; @@ -237,24 +233,32 @@ get_paper (Lily_parser *parser) return layout; } -/* Stack a paper on top of $papers */ +/* Initialize (reset) the $papers stack */ +void +init_papers (Lily_parser *parser) +{ + parser->lexer_->set_identifier (ly_symbol2scm ("$papers"), SCM_EOL); +} + +/* Push a paper on top of $papers stack */ void -stack_paper (Lily_parser *parser, Output_def *paper) +push_paper (Lily_parser *parser, Output_def *paper) { parser->lexer_->set_identifier (ly_symbol2scm ("$papers"), scm_cons (paper->self_scm (), parser->lexer_->lookup_identifier ("$papers"))); } -/* Unstack a paper from $papers */ +/* Pop a paper from $papers stack */ void -unstack_paper (Lily_parser *parser) +pop_paper (Lily_parser *parser) { - parser->lexer_->set_identifier (ly_symbol2scm ("$papers"), - scm_cdr (parser->lexer_->lookup_identifier ("$papers"))); + if (! scm_is_null (parser->lexer_->lookup_identifier ("$papers"))) + parser->lexer_->set_identifier (ly_symbol2scm ("$papers"), + scm_cdr (parser->lexer_->lookup_identifier ("$papers"))); } -/* Change the paper on top of $papers */ +/* Change the paper on top of $papers stack */ void set_paper (Lily_parser *parser, Output_def *paper) {