]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/LaTeXHighlighter.cpp
Complete the removal of the embedding stuff. Maybe. It's hard to be sure we got every...
[lyx.git] / src / frontends / qt4 / LaTeXHighlighter.cpp
index c2f45fd39f657c662fb90cf9a56f61063167cb38..00f8064af9e081573b634513401140bd2a6cddd7 100644 (file)
@@ -8,7 +8,10 @@
  * Full author contact details are available in file CREDITS.
  */
 
+#include <config.h>
+
 #include "LaTeXHighlighter.h"
+#include "qt_helpers.h"
 
 #include <QString>
 #include <QTextDocument>
@@ -23,6 +26,8 @@ LaTeXHighlighter::LaTeXHighlighter(QTextDocument * parent)
        keywordFormat.setFontWeight(QFont::Bold);
        commentFormat.setForeground(Qt::darkGray);
        mathFormat.setForeground(Qt::red);
+       warningFormat.setForeground(Qt::red);
+       warningFormat.setFontWeight(QFont::Bold);
 }
 
 
@@ -83,13 +88,30 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
                setFormat(index, length, keywordFormat);
                index = text.indexOf(exprKeyword, index + length);
        }
-       // comment
-       static const QRegExp exprComment("(^|[^\\\\])%.*$");
-       index = text.indexOf(exprComment);
+       // %comment
+       // Treat a line as a comment starting at a percent sign
+       // * that is the first character in a line
+       // * that is preceded by 
+       // ** an even number of backslashes
+       // ** any character other than a backslash
+       QRegExp exprComment("(?:^|[^\\\\])(?:\\\\\\\\)*(%).*$"); 
+       text.indexOf(exprComment);
+       index = exprComment.pos(1);
        while (index >= 0) {
-               int const length = exprComment.matchedLength();
+               int const length = exprComment.matchedLength() 
+                                - (index - exprComment.pos(0));
                setFormat(index, length, commentFormat);
-               index = text.indexOf(exprComment, index + length);
+               text.indexOf(exprComment, index + length);
+               index = exprComment.pos(1);
+       }
+       // <LyX Warning: ...>
+       QString lyxwarn = qt_("LyX Warning: ");
+       QRegExp exprWarning("<" + lyxwarn + "[^<]*>");
+       index = text.indexOf(exprWarning);
+       while (index >= 0) {
+               int length = exprWarning.matchedLength();
+               setFormat(index, length, warningFormat);
+               index = text.indexOf(exprWarning, index + length);
        }
 }