From eadc8ab147d2453be4eb9339a238a4b5b330a2a4 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Tue, 18 Jul 2023 17:35:48 +0200 Subject: [PATCH] LaTeXHighlighter: handle grouped values with commas in keyval options --- src/frontends/qt/LaTeXHighlighter.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/frontends/qt/LaTeXHighlighter.cpp b/src/frontends/qt/LaTeXHighlighter.cpp index 1fa31a10cd..c18983baa5 100644 --- a/src/frontends/qt/LaTeXHighlighter.cpp +++ b/src/frontends/qt/LaTeXHighlighter.cpp @@ -50,6 +50,7 @@ void LaTeXHighlighter::highlightBlock(QString const & text) if (keyval_) { // Highlight key-val options. Used in some option widgets. static QRegularExpression exprKeyvalkey("[^=,]+"); + static QRegularExpression exprKeyvalgval("[^,]+{[^}]+}"); static QRegularExpression exprKeyvalval("[^,]+"); if (optsnippet_) { static QRegularExpression exprKeyvalkey("^=,+"); @@ -61,13 +62,22 @@ void LaTeXHighlighter::highlightBlock(QString const & text) int length = matchkey.capturedLength(0); setFormat(kvindex, length, keyFormat); if (text.size() > kvindex + length && text.at(kvindex + length) == '=') { - QRegularExpressionMatch matchval = - exprKeyvalval.match(text, kvindex + length); - int kvvindex = matchval.capturedStart(0); + QRegularExpressionMatch matchgval = + exprKeyvalgval.match(text, kvindex + length); + int kvvindex = matchgval.capturedStart(0); if (kvvindex > 0) { - int vlength = matchval.capturedLength(0); + int vlength = matchgval.capturedLength(0); length += vlength; setFormat(kvvindex, vlength, valFormat); + } else { + QRegularExpressionMatch matchval = + exprKeyvalval.match(text, kvindex + length); + kvvindex = matchval.capturedStart(0); + if (kvvindex > 0) { + int vlength = matchval.capturedLength(0); + length += vlength; + setFormat(kvvindex, vlength, valFormat); + } } } matchkey = exprKeyvalkey.match(text, kvindex + length); -- 2.39.5