#include "LaTeXHighlighter.h"
#include "qt_helpers.h"
-#include "support/lassert.h"
-
#include <QString>
#include <QTextDocument>
-
-using namespace lyx::support;
-
namespace lyx {
namespace frontend {
{
// $ $
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("(\\\\\\[|"
// 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);
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 == -1, 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 == -1, return);
-
// %comment
// Treat a line as a comment starting at a percent sign
// * that is the first character in a line
// ** 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 == -1, return);
-
// <LyX Warning: ...>
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 == -1, return);
}
} // namespace frontend