- Supports comments - more efficient as it scans the text block instead of repeatedly searching throught the whole block - type matching based on catalog (but need to add aliases manually) - added many keywords todo: - heap corruption bug - symbol stops at special char like parenthese or operator or something similar.
34 lines
717 B
C++
34 lines
717 B
C++
#ifndef SQLSYNTAXHIGHLIGHTER_H
|
|
#define SQLSYNTAXHIGHLIGHTER_H
|
|
|
|
#include <QSyntaxHighlighter>
|
|
#include <QTextFormat>
|
|
#include <unordered_set>
|
|
#include "util.h"
|
|
|
|
using t_SymbolSet = std::unordered_set<QString>;
|
|
|
|
class PgTypeContainer;
|
|
|
|
class SqlSyntaxHighlighter : public QSyntaxHighlighter
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
SqlSyntaxHighlighter(QTextDocument *parent = nullptr);
|
|
~SqlSyntaxHighlighter();
|
|
|
|
void setTypes(const PgTypeContainer *types);
|
|
protected:
|
|
void highlightBlock(const QString &text) override;
|
|
|
|
private:
|
|
QTextCharFormat m_keywordFormat;
|
|
QTextCharFormat m_commentFormat;
|
|
QTextCharFormat m_quotedStringFormat;
|
|
QTextCharFormat m_typeFormat;
|
|
|
|
t_SymbolSet m_typeNames;
|
|
};
|
|
|
|
#endif // SQLSYNTAXHIGHLIGHTER_H
|