* src/LaTeX.cpp (scanLogFile):

- parse file:line:error style messages (bug 4222)

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20335 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jürgen Spitzmüller 2007-09-18 13:38:30 +00:00
parent 516ff470d8
commit d7af145e72

View File

@ -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