X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FLaTeXHighlighter.cpp;h=9a9e5459a48bcb70bde0f51ef1516c21e669d066;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=aced09f56f1ee7425657479d5e1dc46074122b7f;hpb=2cefb12b22c4c2880561a56d90d9aa6832176684;p=lyx.git diff --git a/src/frontends/qt4/LaTeXHighlighter.cpp b/src/frontends/qt4/LaTeXHighlighter.cpp index aced09f56f..9a9e5459a4 100644 --- a/src/frontends/qt4/LaTeXHighlighter.cpp +++ b/src/frontends/qt4/LaTeXHighlighter.cpp @@ -13,14 +13,9 @@ #include "LaTeXHighlighter.h" #include "qt_helpers.h" -#include "support/lassert.h" - #include #include - -using namespace lyx::support; - namespace lyx { namespace frontend { @@ -40,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("(\\\\\\[|" @@ -72,11 +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); - // We try to avoid infinite loops... - static size_t max_loop = 1000; - for (size_t i = 0; i != max_loop; ++i) { - int endIndex = text.indexOf(exprEndDispMath, startIndex); + startIndex = exprStartDispMath.indexIn(text); + while (startIndex >= 0) { + int endIndex = exprEndDispMath.indexIn(text, startIndex); int length; if (endIndex == -1) { setCurrentBlockState(1); @@ -85,24 +78,16 @@ void LaTeXHighlighter::highlightBlock(QString const & text) length = endIndex - startIndex + exprEndDispMath.matchedLength(); } setFormat(startIndex, length, mathFormat); - startIndex = text.indexOf(exprStartDispMath, startIndex + length); - if (startIndex == -1) - break; + startIndex = exprStartDispMath.indexIn(text, startIndex + length); } - LASSERT(startIndex >= 0, return); - // \whatever static const QRegExp exprKeyword("\\\\[A-Za-z]+"); - index = text.indexOf(exprKeyword); - for (size_t i = 0; i != max_loop; ++i) { + index = exprKeyword.indexIn(text); + while (index >= 0) { int length = exprKeyword.matchedLength(); setFormat(index, length, keywordFormat); - index = text.indexOf(exprKeyword, index + length); - if (index == -1) - break; + index = exprKeyword.indexIn(text, index + length); } - LASSERT(index >= 0, return); - // %comment // Treat a line as a comment starting at a percent sign // * that is the first character in a line @@ -110,31 +95,24 @@ void LaTeXHighlighter::highlightBlock(QString const & text) // ** an even number of backslashes // ** any character other than a backslash QRegExp exprComment("(?:^|[^\\\\])(?:\\\\\\\\)*(%).*$"); - text.indexOf(exprComment); + exprComment.indexIn(text); index = exprComment.pos(1); - for (size_t i = 0; i != max_loop; ++i) { + 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); - if (index == -1) - break; } - LASSERT(index >= 0, return); - // QString lyxwarn = qt_("LyX Warning: "); QRegExp exprWarning("<" + lyxwarn + "[^<]*>"); - index = text.indexOf(exprWarning); - for (size_t i = 0; i != max_loop; ++i) { + index = exprWarning.indexIn(text); + while (index >= 0) { int length = exprWarning.matchedLength(); setFormat(index, length, warningFormat); - index = text.indexOf(exprWarning, index + length); - if (index == -1) - break; + index = exprWarning.indexIn(text, index + length); } - LASSERT(index >= 0, return); } } // namespace frontend