#include "LaTeX.h"
#include "bufferlist.h"
#include "gettext.h"
-#include "lyxfunc.h"
#include "debug.h"
-#include "funcrequest.h"
#include "support/filetools.h"
#include "support/FileInfo.h"
#include "support/tostr.h"
#include <fstream>
#include <cstdio> // sscanf
+using namespace lyx::support;
+
#ifndef CXX_GLOBAL_CSTD
using std::sscanf;
#endif
namespace {
-void showRunMessage(LyXFunc * lf, unsigned int count)
+string runMessage(unsigned int count)
{
- string str = bformat(_("Waiting for LaTeX run number %1$s"), tostr(count));
- lf->dispatch(FuncRequest(LFUN_MESSAGE, str));
+ return bformat(_("Waiting for LaTeX run number %1$s"), tostr(count));
}
-
};
+
/*
* CLASS TEXERRORS
*/
* CLASS LaTeX
*/
-LaTeX::LaTeX(string const & latex, string const & f, string const & p)
- : cmd(latex), file(f), path(p)
+LaTeX::LaTeX(string const & latex, LatexRunParams const & rp,
+ string const & f, string const & p)
+ : cmd(latex), file(f), path(p), runparams(rp)
{
num_errors = 0;
depfile = file + ".dep";
// What files do we have to delete?
// This will at least make latex do all the runs
- lyx::unlink(depfile);
+ unlink(depfile);
// but the reason for the error might be in a generated file...
// bibtex file
string const bbl = ChangeExtension(ofname, ".bbl");
- lyx::unlink(bbl);
+ unlink(bbl);
// makeindex file
string const ind = ChangeExtension(ofname, ".ind");
- lyx::unlink(ind);
+ unlink(ind);
// Also remove the aux file
string const aux = ChangeExtension(ofname, ".aux");
- lyx::unlink(aux);
+ unlink(aux);
}
-int LaTeX::run(TeXErrors & terr, LyXFunc * lfun)
+int LaTeX::run(TeXErrors & terr)
// We know that this function will only be run if the lyx buffer
// has been changed. We also know that a newly written .tex file
// is always different from the previous one because of the date
bool rerun = false; // rerun requested
// The class LaTeX does not know the temp path.
- bufferlist.updateIncludedTeXfiles(lyx::getcwd());
+ bufferlist.updateIncludedTeXfiles(getcwd(), runparams);
// Never write the depfile if an error was encountered.
++count;
lyxerr[Debug::LATEX] << "Run #" << count << endl;
- if (lfun) {
- showRunMessage(lfun, count);
- }
-
+ message(runMessage(count));
+
startscript();
scanres = scanLogFile(terr);
if (scanres & ERROR_RERUN) {
if (head.haschanged(OnlyFilename(ChangeExtension(file, ".idx")))) {
// no checks for now
lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
- if (lfun) {
- lfun->dispatch(FuncRequest(LFUN_MESSAGE, _("Running MakeIndex.")));
- }
-
+ message(_("Running MakeIndex."));
rerun = runMakeIndex(OnlyFilename(ChangeExtension(file, ".idx")));
}
// tags is found -> run bibtex and set rerun = true;
// no checks for now
lyxerr[Debug::LATEX] << "Running BibTeX." << endl;
- if (lfun) {
- lfun->dispatch(FuncRequest(LFUN_MESSAGE, _("Running BibTeX.")));
- }
-
+ message(_("Running BibTeX."));
updateBibtexDependencies(head, bibtex_info);
rerun |= runBibTeX(bibtex_info);
} else if (!had_depfile) {
<< "Dep. file has changed or rerun requested" << endl;
lyxerr[Debug::LATEX]
<< "Run #" << count << endl;
- if (lfun) {
- showRunMessage(lfun, count);
- }
-
+ message(runMessage(count));
startscript();
scanres = scanLogFile(terr);
if (scanres & ERRORS) {
if (head.haschanged(OnlyFilename(ChangeExtension(file, ".idx")))) {
// no checks for now
lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
- if (lfun) {
- lfun->dispatch(FuncRequest(LFUN_MESSAGE, _("Running MakeIndex.")));
- }
-
+ message(_("Running MakeIndex."));
rerun = runMakeIndex(OnlyFilename(ChangeExtension(file, ".idx")));
}
rerun = false;
++count;
lyxerr[Debug::LATEX] << "Run #" << count << endl;
- if (lfun) {
- showRunMessage(lfun, count);
- }
-
+ message(runMessage(count));
startscript();
scanres = scanLogFile(terr);
if (scanres & ERRORS) {