From: Bo Peng Date: Mon, 26 Mar 2007 15:10:59 +0000 (+0000) Subject: latexHighlighter: handles multiline reg expression of all sorts of displayed mathemat... X-Git-Tag: 1.6.10~10483 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=ae6c7d2c51f99b7ce630a4429178f8e9e887e157;p=lyx.git 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 --- 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]+");