Revert cs 28742:28744 to prepare for a proper fix.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28745 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2009-03-09 19:47:46 +00:00
parent ea0ed17421
commit e7e4f9fd55

View File

@ -13,14 +13,9 @@
#include "LaTeXHighlighter.h"
#include "qt_helpers.h"
#include "support/lassert.h"
#include <QString>
#include <QTextDocument>
using namespace lyx::support;
namespace lyx {
namespace frontend {
@ -73,9 +68,7 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
// 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) {
while (startIndex >= 0) {
int endIndex = text.indexOf(exprEndDispMath, startIndex);
int length;
if (endIndex == -1) {
@ -86,23 +79,15 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
}
setFormat(startIndex, length, mathFormat);
startIndex = text.indexOf(exprStartDispMath, startIndex + length);
if (startIndex == -1)
break;
}
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) {
while (index >= 0) {
int length = exprKeyword.matchedLength();
setFormat(index, length, keywordFormat);
index = text.indexOf(exprKeyword, index + length);
if (index == -1)
break;
}
LASSERT(index == -1, return);
// %comment
// Treat a line as a comment starting at a percent sign
// * that is the first character in a line
@ -112,29 +97,22 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
QRegExp exprComment("(?:^|[^\\\\])(?:\\\\\\\\)*(%).*$");
text.indexOf(exprComment);
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);
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) {
while (index >= 0) {
int length = exprWarning.matchedLength();
setFormat(index, length, warningFormat);
index = text.indexOf(exprWarning, index + length);
if (index == -1)
break;
}
LASSERT(index == -1, return);
}
} // namespace frontend