]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeX.cpp
adjust
[lyx.git] / src / LaTeX.cpp
index 1cbbe2a915cdef1a911c9e0d0b15a29d167c4a1d..d326630c6dac154c8a08536c5084b1beadecb93b 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 = false;
+       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
@@ -689,7 +700,9 @@ int LaTeX::scanLogFile(TeXErrors & terr)
                                // we have a latex error
                                retval |=  TEX_ERROR;
                                if (contains(desc,
-                                   "Package babel Error: You haven't defined the language"))
+                                   "Package babel Error: You haven't defined the language") ||
+                                   contains(desc,
+                                   "Package babel Error: You haven't loaded the option"))
                                        retval |= ERROR_RERUN;
                                // get the line number:
                                int line = 0;