diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp index b580242029..dbf369ea11 100644 --- a/src/LaTeX.cpp +++ b/src/LaTeX.cpp @@ -610,6 +610,8 @@ int LaTeX::scanLogFile(TeXErrors & terr) LYXERR(Debug::LATEX) << "Log file: " << tmp << endl; FileName const fn = FileName(makeAbsPath(tmp)); ifstream ifs(fn.toFilesystemEncoding().c_str()); + bool fle_style; + static regex file_line_error(".+\\.\\D+:[0-9]+: (.+)"); string token; while (getline(ifs, token)) { @@ -619,12 +621,16 @@ int LaTeX::scanLogFile(TeXErrors & terr) // \r's afterwards, since we need to remove them anyway. token = subst(token, '\0', '\r'); token = subst(token, "\r", ""); + smatch sub; LYXERR(Debug::LATEX) << "Log line: " << token << endl; if (token.empty()) continue; + if (contains(token, "file:line:error style messages enabled")) + fle_style = true; + if (prefixIs(token, "LaTeX Warning:") || prefixIs(token, "! pdfTeX warning")) { // Here shall we handle different @@ -668,12 +674,17 @@ int LaTeX::scanLogFile(TeXErrors & terr) << "We should rerun." << endl; retval |= RERUN; } - } else if (prefixIs(token, "! ")) { - // Ok, we have something that looks like a TeX Error - // but what do we really have. + } else if (prefixIs(token, "! ") || + fle_style && regex_match(token, sub, file_line_error)) { + // Ok, we have something that looks like a TeX Error + // but what do we really have. // Just get the error description: - string desc(token, 2); + string desc; + if (prefixIs(token, "! ")) + desc = string(token, 2); + else if (fle_style) + desc = sub.str(); if (contains(token, "LaTeX Error:")) retval |= LATEX_ERROR; // get the next line diff --git a/status.15x b/status.15x index 92300811ba..b15e28bdad 100644 --- a/status.15x +++ b/status.15x @@ -83,6 +83,9 @@ What's new - Handle array column specifiers @{decl.}, p{width} and the extensions by array.sty in mathed (bug 4132). +- Detect (pdf)tex's file:line:error style messages that are used by some + distributions and that caused LyX to ignore LaTeX errors (bug 4222). + * USER INTERFACE: - Fix crash when clicking in a tabular cell and the "delete empty paragraph"