X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FLaTeXHighlighter.cpp;h=9a9e5459a48bcb70bde0f51ef1516c21e669d066;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=30a50f8123dc487b8b853833fa660420e32bd0aa;hpb=b8e1e86676d1571b7d3dd2f82c9b0cff61bd3bf2;p=lyx.git diff --git a/src/frontends/qt4/LaTeXHighlighter.cpp b/src/frontends/qt4/LaTeXHighlighter.cpp index 30a50f8123..9a9e5459a4 100644 --- a/src/frontends/qt4/LaTeXHighlighter.cpp +++ b/src/frontends/qt4/LaTeXHighlighter.cpp @@ -11,6 +11,7 @@ #include #include "LaTeXHighlighter.h" +#include "qt_helpers.h" #include #include @@ -25,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); } @@ -32,11 +35,11 @@ void LaTeXHighlighter::highlightBlock(QString const & text) { // $ $ static const QRegExp exprMath("\\$[^\\$]*\\$"); - int index = text.indexOf(exprMath); + int index = exprMath.indexIn(text); while (index >= 0) { int length = exprMath.matchedLength(); setFormat(index, length, mathFormat); - index = text.indexOf(exprMath, index + length); + index = exprMath.indexIn(text, index + length); } // [ ] static const QRegExp exprStartDispMath("(\\\\\\[|" @@ -64,9 +67,9 @@ void LaTeXHighlighter::highlightBlock(QString const & text) // start search from 0 (for end disp math) // otherwise, start search from 'begin disp math' if (previousBlockState() != 1) - startIndex = text.indexOf(exprStartDispMath); + startIndex = exprStartDispMath.indexIn(text); while (startIndex >= 0) { - int endIndex = text.indexOf(exprEndDispMath, startIndex); + int endIndex = exprEndDispMath.indexIn(text, startIndex); int length; if (endIndex == -1) { setCurrentBlockState(1); @@ -75,32 +78,41 @@ void LaTeXHighlighter::highlightBlock(QString const & text) length = endIndex - startIndex + exprEndDispMath.matchedLength(); } setFormat(startIndex, length, mathFormat); - startIndex = text.indexOf(exprStartDispMath, startIndex + length); + startIndex = exprStartDispMath.indexIn(text, startIndex + length); } // \whatever static const QRegExp exprKeyword("\\\\[A-Za-z]+"); - index = text.indexOf(exprKeyword); + index = exprKeyword.indexIn(text); while (index >= 0) { int length = exprKeyword.matchedLength(); setFormat(index, length, keywordFormat); - index = text.indexOf(exprKeyword, index + length); + index = exprKeyword.indexIn(text, index + length); } // %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 + // ** any character other than a backslash QRegExp exprComment("(?:^|[^\\\\])(?:\\\\\\\\)*(%).*$"); - text.indexOf(exprComment); + exprComment.indexIn(text); index = exprComment.pos(1); while (index >= 0) { int const length = exprComment.matchedLength() - (index - exprComment.pos(0)); setFormat(index, length, commentFormat); - text.indexOf(exprComment, index + length); + exprComment.indexIn(text, index + length); index = exprComment.pos(1); } + // + QString lyxwarn = qt_("LyX Warning: "); + QRegExp exprWarning("<" + lyxwarn + "[^<]*>"); + index = exprWarning.indexIn(text); + while (index >= 0) { + int length = exprWarning.matchedLength(); + setFormat(index, length, warningFormat); + index = exprWarning.indexIn(text, index + length); + } } } // namespace frontend