X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLiterate.C;h=134d6d310e8876cf75e52b1b26e0a44019bdf92f;hb=35cf7dcb2bdfdcda465b69c58465f657c77fd9d7;hp=da0ad20dbb7bcadefd38a793f1eeebed1cc9b376;hpb=0eccdd1c3613e5170deb77b22174dd0afde833e9;p=lyx.git diff --git a/src/Literate.C b/src/Literate.C index da0ad20dbb..134d6d310e 100644 --- a/src/Literate.C +++ b/src/Literate.C @@ -1,195 +1,107 @@ /* This file is part of - * ====================================================== + * ====================================================== * * LyX, The Document Processor * Copyright 1995 Matthias Ettrich - * Copyright 1995-1999 The LyX Team. + * Copyright 1995-2000 The LyX Team. * - * ====================================================== + * ====================================================== */ #include -#include -#include - #ifdef __GNUG__ #pragma implementation #endif +#include #include "support/filetools.h" #include "LaTeX.h" #include "Literate.h" -#include "lyxlex.h" #include "support/FileInfo.h" -#include "error.h" +#include "debug.h" #include "support/lyxlib.h" #include "support/syscall.h" #include "support/syscontr.h" -#include "pathstack.h" +#include "support/path.h" #include "bufferlist.h" #include "minibuffer.h" #include "gettext.h" +using std::ifstream; +using std::getline; +using std::endl; + extern BufferList bufferlist; Literate::Literate(string const & latex, string const & f, string const & p, string const & l, string const & literate, string const & literate_f, string const & build, string const & build_f) - : LaTeX (latex, f, p), + : LaTeX(latex, f, p), litfile(l), literate_cmd(literate), literate_filter(literate_f), build_cmd(build), build_filter(build_f) -{ -} +{} -int Literate::weave(TeXErrors &terr, MiniBuffer *minib) +int Literate::weave(TeXErrors & terr, MiniBuffer * minib) { int scanres = Literate::NO_ERRORS; string tmp1, tmp2; int ret1, ret2; Systemcalls one, two; + string logfile = OnlyFilename(ChangeExtension(file, ".log")); // The class LaTeX does not know the temp path. bufferlist.updateIncludedTeXfiles(GetCWD()); - lyxerr.debug(string(_("Weaving document")), - Error::LATEX); + lyxerr[Debug::LATEX] << "Weaving document" << endl; minib->Set(string(_("Weaving document"))); minib->Store(); // Run the literate program to convert \literate_extension file to .tex file // tmp1 = literate_cmd + " < " + litfile + " > " + file + " 2> " + litfile + ".out"; - tmp2 = literate_filter + " < " + litfile + ".out" + " > " + litfile + ".log"; - ret1 = one.Startscript(Systemcalls::System, tmp1); - ret2 = two.Startscript(Systemcalls::System, tmp2); - lyxerr.debug(string(_("LITERATE")) + " {" + tmp1 + "} {" + tmp2 + "}"); - scanres = scanLiterateLogFile(terr); - if (scanres & Literate::ERRORS) return scanres; // return on literate error + tmp2 = literate_filter + " < " + litfile + ".out" + " > " + logfile; + ret1 = one.startscript(Systemcalls::System, tmp1); + ret2 = two.startscript(Systemcalls::System, tmp2); + lyxerr.debug() << "LITERATE {" << tmp1 << "} {" << tmp2 << "}" << endl; + scanres = scanLogFile(terr); + if (scanres & Literate::ERRORS) return scanres; // return on literate error return run(terr, minib); } -int Literate::build(TeXErrors &terr, MiniBuffer *minib) +int Literate::build(TeXErrors & terr, MiniBuffer * minib) // We know that this function will only be run if the lyx buffer // has been changed. { int scanres = Literate::NO_ERRORS; num_errors = 0; // just to make sure. - // DepTable head; // empty head // unused - // bool rerun = false; // rerun requested // unused string tmp1, tmp2; int ret1, ret2; Systemcalls one, two; + string logfile = OnlyFilename(ChangeExtension(file, ".log")); + // The class LaTeX does not know the temp path. bufferlist.updateIncludedTeXfiles(GetCWD()); - lyxerr.debug(string(_("Building program")), - Error::LATEX); + lyxerr[Debug::LATEX] << "Building program" << endl; minib->Set(string(_("Building program"))); minib->Store(); // Run the build program // tmp1 = build_cmd + ' ' + litfile + " > " + litfile + ".out 2>&1"; - tmp2 = build_filter + " < " + litfile + ".out" + " > " + litfile + ".log"; - ret1 = one.Startscript(Systemcalls::System, tmp1); - ret2 = two.Startscript(Systemcalls::System, tmp2); - scanres = scanBuildLogFile(terr); - lyxerr.debug("Done.", Error::LATEX); - - return scanres; -} - - -int Literate::scanLiterateLogFile(TeXErrors &terr) -{ - string token; - int retval = NO_ERRORS; - - LyXLex lex(0, 0); - - string tmp = litfile + ".log"; - - if (!lex.setFile(tmp)) { - // unable to open file - // return at once - retval |= NO_LOGFILE; - return retval; - } - - while (lex.IsOK()) { - if (lex.EatLine()) - token = lex.GetString(); - else // blank line in the file being read - continue; - - lyxerr.debug(token, Error::LATEX); - - if (prefixIs(token, "Build Warning:")) { - // Here shall we handle different - // types of warnings - retval |= LATEX_WARNING; - lyxerr.debug("Build Warning.", Error::LATEX); - } else if (prefixIs(token, "! Build Error:")) { - // Here shall we handle different - // types of errors - retval |= LATEX_ERROR; - lyxerr.debug("Build Error.", Error::LATEX); - // this is not correct yet - terr.scanError(lex); - num_errors++; - } - } - return retval; -} + tmp2 = build_filter + " < " + litfile + ".out" + " > " + logfile; + ret1 = one.startscript(Systemcalls::System, tmp1); + ret2 = two.startscript(Systemcalls::System, tmp2); + scanres = scanLogFile(terr); + lyxerr[Debug::LATEX] << "Done." << endl; -int Literate::scanBuildLogFile(TeXErrors &terr) -{ - string token; - int retval = NO_ERRORS; - - LyXLex lex(0, 0); - - string tmp = litfile + ".log"; - - if (!lex.setFile(tmp)) { - // unable to open file - // return at once - retval |= NO_LOGFILE; - return retval; - } - - while (lex.IsOK()) { - if (lex.EatLine()) - token = lex.GetString(); - else // blank line in the file being read - continue; - - lyxerr.debug(token, Error::LATEX); - - if (prefixIs(token, "Build Warning:")) { - // Here shall we handle different - // types of warnings - retval |= LATEX_WARNING; - lyxerr.debug("Build Warning.", Error::LATEX); - } else if (prefixIs(token, "! Build Error:")) { - // Here shall we handle different - // types of errors - retval |= LATEX_ERROR; - lyxerr.debug("Build Error.", Error::LATEX); - // this is not correct yet - terr.scanError(lex); - num_errors++; - } - } - return retval; + return scanres; } - -