From ae6c7d2c51f99b7ce630a4429178f8e9e887e157 Mon Sep 17 00:00:00 2001 From: Bo Peng Date: Mon, 26 Mar 2007 15:10:59 +0000 Subject: [PATCH] latexHighlighter: handles multiline reg expression of all sorts of displayed mathematics environments git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17573 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt4/QViewSource.C | 43 ++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/src/frontends/qt4/QViewSource.C b/src/frontends/qt4/QViewSource.C index 981cbc40ef..2a75f4e261 100644 --- a/src/frontends/qt4/QViewSource.C +++ b/src/frontends/qt4/QViewSource.C @@ -49,12 +49,43 @@ void latexHighlighter::highlightBlock(QString const & text) index = text.indexOf(exprMath, index + length); } // [ ] - QRegExp exprDispMath("\\[[^\\]]*\\]"); - index = text.indexOf(exprDispMath); - while (index >= 0) { - int length = exprDispMath.matchedLength(); - setFormat(index, length, mathFormat); - index = text.indexOf(exprDispMath, index + length); + QRegExp exprStartDispMath("(\\\\\\[|" + "\\\\begin\\{equation\\**\\}|" + "\\\\begin\\{eqnarray\\**\\}|" + "\\\\begin\\{align(ed|at)*\\**\\}|" + "\\\\begin\\{flalign\\**\\}|" + "\\\\begin\\{gather\\**\\}|" + "\\\\begin\\{multline\\**\\}|" + "\\\\begin\\{array\\**\\}|" + "\\\\begin\\{cases\\**\\}" + ")"); + QRegExp exprEndDispMath("(\\\\\\]|" + "\\\\end\\{equation\\**\\}|" + "\\\\end\\{eqnarray\\**\\}|" + "\\\\end\\{align(ed|at)*\\**\\}|" + "\\\\end\\{flalign\\**\\}|" + "\\\\end\\{gather\\**\\}|" + "\\\\end\\{multline\\**\\}|" + "\\\\end\\{array\\**\\}|" + "\\\\end\\{cases\\**\\}" + ")"); + int startIndex = 0; + // if previous block was in 'disp math' + // start search from 0 (for end disp math) + // otherwise, start search from 'begin disp math' + if (previousBlockState() != 1) + startIndex = text.indexOf(exprStartDispMath); + while (startIndex >= 0) { + int endIndex = text.indexOf(exprEndDispMath, startIndex); + int length; + if (endIndex == -1) { + setCurrentBlockState(1); + length = text.length() - startIndex; + } else { + length = endIndex - startIndex + exprEndDispMath.matchedLength(); + } + setFormat(startIndex, length, mathFormat); + startIndex = text.indexOf(exprStartDispMath, startIndex + length); } // \whatever QRegExp exprKeyword("\\\\[A-Za-z]+"); -- 2.39.5