]> git.lyx.org Git - features.git/commitdiff
* src/LaTeX.cpp (scanLogFile):
authorJürgen Spitzmüller <spitz@lyx.org>
Tue, 18 Sep 2007 13:38:30 +0000 (13:38 +0000)
committerJürgen Spitzmüller <spitz@lyx.org>
Tue, 18 Sep 2007 13:38:30 +0000 (13:38 +0000)
- 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

src/LaTeX.cpp

index b5802420294ccc08fa3b3d179150fb6c921ecbf6..dbf369ea11c1c16906585c3da263e64e2da68ae8 100644 (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