Skip to content

Commit cb1eb2a

Browse files
committed
Add highlighting for CASE condition; make regex for quote matching less greedy
1 parent c8bb12f commit cb1eb2a

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

src/gui/qgsexpressionhighlighter.cpp

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,32 +15,45 @@
1515

1616
#include "qgsexpressionhighlighter.h"
1717

18-
QgsExpressionHighlighter::QgsExpressionHighlighter( QTextDocument *parent)
18+
QgsExpressionHighlighter::QgsExpressionHighlighter( QTextDocument *parent )
1919
: QSyntaxHighlighter( parent )
2020
{
2121
HighlightingRule rule;
2222

23+
keywordFormat.setForeground( Qt::darkBlue );
24+
keywordFormat.setFontWeight( QFont::Bold );
25+
QStringList keywordPatterns;
26+
keywordPatterns << "\\bCASE\\b" << "\\bWHEN\\b" << "\\bTHEN\\b"
27+
<< "\\bELSE\\b" << "\\bEND\\b";
28+
29+
foreach( const QString &pattern, keywordPatterns )
30+
{
31+
rule.pattern = QRegExp( pattern, Qt::CaseInsensitive );
32+
rule.format = keywordFormat;
33+
highlightingRules.append( rule );
34+
}
35+
2336
quotationFormat.setForeground( Qt::darkGreen );
24-
rule.pattern = QRegExp( "\'.*\'" );
37+
rule.pattern = QRegExp( "\'[^\'\r\n]*\'" );
2538
rule.format = quotationFormat;
2639
highlightingRules.append( rule );
2740

2841
columnNameFormat.setForeground( Qt::darkRed );
29-
rule.pattern = QRegExp( "\".*\"" );
42+
rule.pattern = QRegExp( "\"[^\"\r\n]*\"" );
3043
rule.format = columnNameFormat;
3144
highlightingRules.append( rule );
3245
}
3346

34-
void QgsExpressionHighlighter::addFields(QStringList fieldList)
47+
void QgsExpressionHighlighter::addFields( QStringList fieldList )
3548
{
36-
columnNameFormat.setForeground( Qt::darkRed );
37-
HighlightingRule rule;
38-
foreach (const QString field, fieldList)
39-
{
40-
rule.pattern = QRegExp("\\b" + field + "\\b");
41-
rule.format = columnNameFormat;
42-
highlightingRules.append( rule );
43-
}
49+
columnNameFormat.setForeground( Qt::darkRed );
50+
HighlightingRule rule;
51+
foreach( const QString field, fieldList )
52+
{
53+
rule.pattern = QRegExp( "\\b" + field + "\\b" );
54+
rule.format = columnNameFormat;
55+
highlightingRules.append( rule );
56+
}
4457
}
4558

4659
void QgsExpressionHighlighter::highlightBlock( const QString &text )

0 commit comments

Comments
 (0)