2021-05-14 23:56:43 +08:00
|
|
|
#include "base.h"
|
|
|
|
#include "../Constants.h"
|
|
|
|
|
2021-05-26 00:04:20 +08:00
|
|
|
SynHighlighter::SynHighlighter() :
|
2021-05-14 23:56:43 +08:00
|
|
|
mEnabled(true),
|
2021-05-26 00:04:20 +08:00
|
|
|
mWordBreakChars{ SynWordBreakChars }
|
2021-05-14 23:56:43 +08:00
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
const QMap<QString, PSynHighlighterAttribute>& SynHighlighter::attributes() const
|
|
|
|
{
|
|
|
|
return mAttributes;
|
|
|
|
}
|
|
|
|
|
|
|
|
const QSet<QChar>& SynHighlighter::wordBreakChars() const
|
|
|
|
{
|
|
|
|
return mWordBreakChars;
|
|
|
|
}
|
|
|
|
|
|
|
|
PSynHighlighterAttribute SynHighlighter::commentAttribute() const
|
|
|
|
{
|
|
|
|
return mCommentAttribute;
|
|
|
|
}
|
|
|
|
|
|
|
|
PSynHighlighterAttribute SynHighlighter::identifierAttribute() const
|
|
|
|
{
|
|
|
|
return mIdentifierAttribute;
|
|
|
|
}
|
|
|
|
|
|
|
|
PSynHighlighterAttribute SynHighlighter::keywordAttribute() const
|
|
|
|
{
|
|
|
|
return mKeywordAttribute;
|
|
|
|
}
|
|
|
|
|
|
|
|
PSynHighlighterAttribute SynHighlighter::stringAttribute() const
|
|
|
|
{
|
|
|
|
return mStringAttribute;
|
|
|
|
}
|
|
|
|
|
|
|
|
PSynHighlighterAttribute SynHighlighter::whitespaceAttribute() const
|
|
|
|
{
|
|
|
|
return mWhitespaceAttribute;
|
|
|
|
}
|
|
|
|
|
|
|
|
PSynHighlighterAttribute SynHighlighter::symbolAttribute() const
|
|
|
|
{
|
|
|
|
return mSymbolAttribute;
|
|
|
|
}
|
|
|
|
|
|
|
|
int SynHighlighter::getBraceLevel() const
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int SynHighlighter::getBracketLevel() const
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int SynHighlighter::getParenthesisLevel() const
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
SynHighlighterTokenType SynHighlighter::getTokenType()
|
|
|
|
{
|
|
|
|
return SynHighlighterTokenType::Default;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool SynHighlighter::isKeyword(const QString &)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SynHighlighter::nextToEol()
|
|
|
|
{
|
|
|
|
while (!eol())
|
|
|
|
next();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool SynHighlighter::isSpaceChar(const QChar &ch)
|
|
|
|
{
|
|
|
|
return ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n';
|
|
|
|
}
|
|
|
|
|
|
|
|
bool SynHighlighter::isIdentChar(const QChar &ch) const
|
|
|
|
{
|
|
|
|
if (ch == '_') {
|
|
|
|
return true;
|
|
|
|
}
|
2021-06-21 22:01:35 +08:00
|
|
|
if ((ch>='0') && (ch <= '9')) {
|
2021-05-14 23:56:43 +08:00
|
|
|
return true;
|
|
|
|
}
|
2021-06-21 22:01:35 +08:00
|
|
|
if ((ch>='a') && (ch <= 'z')) {
|
2021-05-14 23:56:43 +08:00
|
|
|
return true;
|
|
|
|
}
|
2021-06-21 22:01:35 +08:00
|
|
|
if ((ch>='A') && (ch <= 'Z')) {
|
2021-05-14 23:56:43 +08:00
|
|
|
return true;
|
|
|
|
}
|
2021-06-21 22:17:37 +08:00
|
|
|
return false;
|
2021-05-14 23:56:43 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void SynHighlighter::addAttribute(PSynHighlighterAttribute attribute)
|
|
|
|
{
|
|
|
|
mAttributes[attribute->name()]=attribute;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SynHighlighter::clearAttributes()
|
|
|
|
{
|
|
|
|
mAttributes.clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
int SynHighlighter::attributesCount() const
|
|
|
|
{
|
|
|
|
return mAttributes.size();
|
|
|
|
}
|
|
|
|
|
|
|
|
PSynHighlighterAttribute SynHighlighter::getAttribute(const QString &name) const
|
|
|
|
{
|
|
|
|
auto search = mAttributes.find(name);
|
|
|
|
if (search!=mAttributes.end()) {
|
|
|
|
return search.value();
|
|
|
|
}
|
|
|
|
return PSynHighlighterAttribute();
|
|
|
|
}
|
|
|
|
|
2021-05-18 15:49:58 +08:00
|
|
|
bool SynHighlighter::enabled() const
|
|
|
|
{
|
|
|
|
return mEnabled;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SynHighlighter::setEnabled(bool value)
|
|
|
|
{
|
|
|
|
if (value != mEnabled) {
|
|
|
|
mEnabled = value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-05-14 23:56:43 +08:00
|
|
|
SynFontStyles SynHighlighterAttribute::styles() const
|
|
|
|
{
|
|
|
|
return mStyles;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SynHighlighterAttribute::setStyles(const SynFontStyles &styles)
|
|
|
|
{
|
|
|
|
if (mStyles!=styles) {
|
|
|
|
mStyles = styles;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-05-26 00:04:20 +08:00
|
|
|
QColor SynHighlighterAttribute::foreground() const
|
2021-05-14 23:56:43 +08:00
|
|
|
{
|
2021-05-26 00:04:20 +08:00
|
|
|
return mForeground;
|
2021-05-14 23:56:43 +08:00
|
|
|
}
|
|
|
|
|
2021-05-26 00:04:20 +08:00
|
|
|
void SynHighlighterAttribute::setForeground(const QColor &color)
|
2021-05-14 23:56:43 +08:00
|
|
|
{
|
2021-05-26 00:04:20 +08:00
|
|
|
mForeground = color;
|
2021-05-14 23:56:43 +08:00
|
|
|
}
|
|
|
|
|
2021-05-26 00:04:20 +08:00
|
|
|
QColor SynHighlighterAttribute::background() const
|
2021-05-14 23:56:43 +08:00
|
|
|
{
|
2021-05-26 00:04:20 +08:00
|
|
|
return mBackground;
|
2021-05-14 23:56:43 +08:00
|
|
|
}
|
|
|
|
|
2021-05-26 00:04:20 +08:00
|
|
|
void SynHighlighterAttribute::setBackground(const QColor &background)
|
2021-05-14 23:56:43 +08:00
|
|
|
{
|
2021-05-26 00:04:20 +08:00
|
|
|
mBackground = background;
|
2021-05-14 23:56:43 +08:00
|
|
|
}
|
|
|
|
|
2021-05-26 00:04:20 +08:00
|
|
|
QString SynHighlighterAttribute::name() const
|
2021-05-14 23:56:43 +08:00
|
|
|
{
|
2021-05-26 00:04:20 +08:00
|
|
|
return mName;
|
2021-05-14 23:56:43 +08:00
|
|
|
}
|
|
|
|
|
2021-05-26 00:04:20 +08:00
|
|
|
void SynHighlighterAttribute::setName(const QString &name)
|
2021-05-14 23:56:43 +08:00
|
|
|
{
|
2021-05-26 00:04:20 +08:00
|
|
|
if (mName!=name) {
|
|
|
|
mName = name;
|
|
|
|
}
|
2021-05-14 23:56:43 +08:00
|
|
|
}
|
|
|
|
|
2021-05-26 00:04:20 +08:00
|
|
|
SynHighlighterAttribute::SynHighlighterAttribute(const QString &name):
|
|
|
|
mForeground(QColor()),
|
|
|
|
mBackground(QColor()),
|
2021-05-26 18:32:17 +08:00
|
|
|
mName(name),
|
|
|
|
mStyles(SynFontStyle::fsNone)
|
2021-05-14 23:56:43 +08:00
|
|
|
{
|
2021-05-26 00:04:20 +08:00
|
|
|
|
2021-05-14 23:56:43 +08:00
|
|
|
}
|