mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
Allow makeindex, nomencl, and bibtex runs to be canceled, too.
This commit is contained in:
parent
12b03b30f4
commit
b5e5c2576a
@ -284,20 +284,34 @@ int LaTeX::run(TeXErrors & terr)
|
||||
LYXERR(Debug::LATEX, "Running MakeIndex.");
|
||||
message(_("Running Index Processor."));
|
||||
// onlyFileName() is needed for cygwin
|
||||
rerun |= runMakeIndex(onlyFileName(idxfile.absFileName()),
|
||||
runparams);
|
||||
int const ret =
|
||||
runMakeIndex(onlyFileName(idxfile.absFileName()), runparams);
|
||||
if (ret)
|
||||
return ret;
|
||||
rerun = true;
|
||||
}
|
||||
|
||||
FileName const nlofile(changeExtension(file.absFileName(), ".nlo"));
|
||||
// If all nomencl entries are removed, nomencl writes an empty nlo file.
|
||||
// DepTable::hasChanged() returns false in this case, since it does not
|
||||
// distinguish empty files from non-existing files. This is why we need
|
||||
// the extra checks here (to trigger a rerun). Cf. discussions in #8905.
|
||||
// FIXME: Sort out the real problem in DepTable.
|
||||
if (head.haschanged(nlofile) || (nlofile.exists() && nlofile.isFileEmpty()))
|
||||
rerun |= runMakeIndexNomencl(file, ".nlo", ".nls");
|
||||
if (head.haschanged(nlofile) || (nlofile.exists() && nlofile.isFileEmpty())) {
|
||||
int const ret = runMakeIndexNomencl(file, ".nlo", ".nls");
|
||||
if (ret)
|
||||
return ret;
|
||||
rerun = true;
|
||||
}
|
||||
|
||||
FileName const glofile(changeExtension(file.absFileName(), ".glo"));
|
||||
if (head.haschanged(glofile))
|
||||
rerun |= runMakeIndexNomencl(file, ".glo", ".gls");
|
||||
if (head.haschanged(glofile)) {
|
||||
int const ret = runMakeIndexNomencl(file, ".glo", ".gls");
|
||||
if (ret)
|
||||
return ret;
|
||||
rerun = true;
|
||||
}
|
||||
|
||||
|
||||
// check if we're using biber instead of bibtex
|
||||
// biber writes no info to the aux file, so we just check
|
||||
@ -315,7 +329,10 @@ int LaTeX::run(TeXErrors & terr)
|
||||
LYXERR(Debug::LATEX, "Running BibTeX.");
|
||||
message(_("Running BibTeX."));
|
||||
updateBibtexDependencies(head, bibtex_info);
|
||||
rerun |= runBibTeX(bibtex_info, runparams);
|
||||
int exitCode;
|
||||
rerun |= runBibTeX(bibtex_info, runparams, exitCode);
|
||||
if (exitCode)
|
||||
return exitCode;
|
||||
FileName const blgfile(changeExtension(file.absFileName(), ".blg"));
|
||||
if (blgfile.exists())
|
||||
bscanres = scanBlgFile(head, terr);
|
||||
@ -368,7 +385,10 @@ int LaTeX::run(TeXErrors & terr)
|
||||
LYXERR(Debug::LATEX, "Running BibTeX.");
|
||||
message(_("Running BibTeX."));
|
||||
updateBibtexDependencies(head, bibtex_info);
|
||||
rerun |= runBibTeX(bibtex_info, runparams);
|
||||
int exitCode;
|
||||
rerun |= runBibTeX(bibtex_info, runparams, exitCode);
|
||||
if (exitCode)
|
||||
return exitCode;
|
||||
FileName const blgfile(changeExtension(file.absFileName(), ".blg"));
|
||||
if (blgfile.exists())
|
||||
bscanres = scanBlgFile(head, terr);
|
||||
@ -388,8 +408,11 @@ int LaTeX::run(TeXErrors & terr)
|
||||
LYXERR(Debug::LATEX, "Running MakeIndex.");
|
||||
message(_("Running Index Processor."));
|
||||
// onlyFileName() is needed for cygwin
|
||||
rerun = runMakeIndex(onlyFileName(changeExtension(
|
||||
int const ret = runMakeIndex(onlyFileName(changeExtension(
|
||||
file.absFileName(), ".idx")), runparams);
|
||||
if (ret)
|
||||
return ret;
|
||||
rerun = true;
|
||||
}
|
||||
|
||||
// I am not pretty sure if need this twice.
|
||||
@ -455,7 +478,7 @@ int LaTeX::startscript()
|
||||
}
|
||||
|
||||
|
||||
bool LaTeX::runMakeIndex(string const & f, OutputParams const & runparams,
|
||||
int LaTeX::runMakeIndex(string const & f, OutputParams const & runparams,
|
||||
string const & params)
|
||||
{
|
||||
string tmp = runparams.use_japanese ?
|
||||
@ -478,12 +501,13 @@ bool LaTeX::runMakeIndex(string const & f, OutputParams const & runparams,
|
||||
tmp += quoteName(f);
|
||||
tmp += params;
|
||||
Systemcall one;
|
||||
one.startscript(Systemcall::Wait, tmp, path, lpath);
|
||||
return true;
|
||||
Systemcall::Starttype const starttype =
|
||||
allow_cancel ? Systemcall::WaitLoop : Systemcall::Wait;
|
||||
return one.startscript(starttype, tmp, path, lpath, true);
|
||||
}
|
||||
|
||||
|
||||
bool LaTeX::runMakeIndexNomencl(FileName const & file,
|
||||
int LaTeX::runMakeIndexNomencl(FileName const & file,
|
||||
string const & nlo, string const & nls)
|
||||
{
|
||||
LYXERR(Debug::LATEX, "Running MakeIndex for nomencl.");
|
||||
@ -494,8 +518,9 @@ bool LaTeX::runMakeIndexNomencl(FileName const & file,
|
||||
tmp += " -o "
|
||||
+ onlyFileName(changeExtension(file.toFilesystemEncoding(), nls));
|
||||
Systemcall one;
|
||||
one.startscript(Systemcall::Wait, tmp, path, lpath);
|
||||
return true;
|
||||
Systemcall::Starttype const starttype =
|
||||
allow_cancel ? Systemcall::WaitLoop : Systemcall::Wait;
|
||||
return one.startscript(starttype, tmp, path, lpath, true);
|
||||
}
|
||||
|
||||
|
||||
@ -629,9 +654,10 @@ void LaTeX::updateBibtexDependencies(DepTable & dep,
|
||||
|
||||
|
||||
bool LaTeX::runBibTeX(vector<AuxInfo> const & bibtex_info,
|
||||
OutputParams const & runparams)
|
||||
OutputParams const & runparams, int & exit_code)
|
||||
{
|
||||
bool result = false;
|
||||
exit_code = 0;
|
||||
for (vector<AuxInfo>::const_iterator it = bibtex_info.begin();
|
||||
it != bibtex_info.end(); ++it) {
|
||||
if (!biber && it->databases.empty())
|
||||
@ -644,7 +670,12 @@ bool LaTeX::runBibTeX(vector<AuxInfo> const & bibtex_info,
|
||||
tmp += quoteName(onlyFileName(removeExtension(
|
||||
it->aux_file.absFileName())));
|
||||
Systemcall one;
|
||||
one.startscript(Systemcall::Wait, tmp, path, lpath);
|
||||
Systemcall::Starttype const starttype =
|
||||
allow_cancel ? Systemcall::WaitLoop : Systemcall::Wait;
|
||||
exit_code = one.startscript(starttype, tmp, path, lpath, true);
|
||||
if (exit_code) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
// Return whether bibtex was run
|
||||
return result;
|
||||
|
10
src/LaTeX.h
10
src/LaTeX.h
@ -188,12 +188,12 @@ private:
|
||||
///
|
||||
void deplog(DepTable & head);
|
||||
|
||||
///
|
||||
bool runMakeIndex(std::string const &, OutputParams const &,
|
||||
/// returns exit code
|
||||
int runMakeIndex(std::string const &, OutputParams const &,
|
||||
std::string const & = std::string());
|
||||
|
||||
///
|
||||
bool runMakeIndexNomencl(support::FileName const &,
|
||||
/// returns exit code
|
||||
int runMakeIndexNomencl(support::FileName const &,
|
||||
std::string const &, std::string const &);
|
||||
|
||||
///
|
||||
@ -215,7 +215,7 @@ private:
|
||||
|
||||
///
|
||||
bool runBibTeX(std::vector<AuxInfo> const &,
|
||||
OutputParams const &);
|
||||
OutputParams const &, int & exit_code);
|
||||
|
||||
///
|
||||
void removeAuxiliaryFiles() const;
|
||||
|
Loading…
Reference in New Issue
Block a user