diff --git a/src/PreferencesDialog.cpp b/src/PreferencesDialog.cpp index addf45d9..3d263dd6 100644 --- a/src/PreferencesDialog.cpp +++ b/src/PreferencesDialog.cpp @@ -152,9 +152,9 @@ QVariant PreferencesDialog::getSettingsDefaultValue(const QString& group, const // syntaxhighlighter? if(group == "syntaxhighlighter") { - // Bold? Only tables and keywords are bold by default + // Bold? Only tables, functions and keywords are bold by default if(name.right(4) == "bold") - return name == "keyword_bold" || name == "table_bold"; + return name == "keyword_bold" || name == "table_bold" || name == "function_bold"; // Italic? Nothing by default if(name.right(6) == "italic") @@ -169,6 +169,8 @@ QVariant PreferencesDialog::getSettingsDefaultValue(const QString& group, const { if(name == "keyword_colour") return QColor(Qt::darkBlue).name(); + else if(name == "function_colour") + return QColor(Qt::blue).name(); else if(name == "table_colour") return QColor(Qt::darkCyan).name(); else if(name == "comment_colour") diff --git a/src/PreferencesDialog.ui b/src/PreferencesDialog.ui index 37473826..7db0c2d7 100644 --- a/src/PreferencesDialog.ui +++ b/src/PreferencesDialog.ui @@ -187,6 +187,14 @@ + + + function + + + Function + + table diff --git a/src/SQLiteSyntaxHighlighter.cpp b/src/SQLiteSyntaxHighlighter.cpp index 629adfa9..de4b3fea 100644 --- a/src/SQLiteSyntaxHighlighter.cpp +++ b/src/SQLiteSyntaxHighlighter.cpp @@ -11,7 +11,9 @@ SQLiteSyntaxHighlighter::SQLiteSyntaxHighlighter(QTextDocument *parent) : singleLineCommentFormat = createFormat("comment"); identifierFormat = createFormat("identifier"); stringFormat = createFormat("string"); + functionFormat = createFormat("function"); + // Keywords QStringList keywordPatterns; keywordPatterns << "ABORT" << "ACTION" << "ADD" << "AFTER" << "ALL" @@ -40,10 +42,35 @@ SQLiteSyntaxHighlighter::SQLiteSyntaxHighlighter(QTextDocument *parent) : << "VACUUM" << "VALUES" << "VIEW" << "VIRTUAL" << "WHEN" << "WHERE"; + rule.format = keywordFormat; foreach (const QString &pattern, keywordPatterns) { rule.pattern = QRegExp(QString("\\b%1\\b").arg(pattern)); rule.pattern.setCaseSensitivity(Qt::CaseInsensitive); - rule.format = keywordFormat; + highlightingRules.append(rule); + } + + // Functions + QStringList functionPatterns; + functionPatterns + // Core functions + << "ABS" << "CHANGES" << "CHAR" << "COALESCE" << "GLOB" + << "IFNULL" << "INSTR" << "HEX" << "LAST_INSERT_ROW" << "LENGTH" + << "LIKE" << "LOAD_EXTENSION" << "LOWER" << "LTRIM" << "MAX" + << "MIN" << "NULLIF" << "QUOTE" << "RANDOM" << "RANDOMBLOB" + << "REPLACE" << "ROUND" << "RTRIM" << "SOUNDEX" << "SQLITE_COMPILEOPTION_GET" + << "SQLITE_COMPILEOPTION_USED" << "SQLITE_SOURCE_ID" << "SQLITE_VERSION" << "SUBSTR" << "TOTAL_CHANGES" + << "TRIM" << "TYPEOF" << "UNICODE" << "UPPER" << "ZEROBLOB" + // Date and time functions + << "DATE" << "TIME" << "DATETIME" << "JULIANDAY" << "STRFTIME" + // Aggregate functions + << "AVG" << "COUNT" << "GROUP_CONCAT" << "MAX" << "MIN" + << "SUM" << "TOTAL"; + + rule.format = functionFormat; + foreach(const QString& pattern, functionPatterns) + { + rule.pattern = QRegExp(QString("\\b%1\\b").arg(pattern)); + rule.pattern.setCaseSensitivity(Qt::CaseInsensitive); highlightingRules.append(rule); } diff --git a/src/SQLiteSyntaxHighlighter.h b/src/SQLiteSyntaxHighlighter.h index 71bc85ae..54892118 100644 --- a/src/SQLiteSyntaxHighlighter.h +++ b/src/SQLiteSyntaxHighlighter.h @@ -30,6 +30,7 @@ private: QTextCharFormat stringFormat; QTextCharFormat identifierFormat; QTextCharFormat tableFormat; + QTextCharFormat functionFormat; QTextCharFormat createFormat(const QString& settings_name); };