Допустим в этом языке комментарии строк принято обозначать символом **, аналогично // в C++. Давайте предположим, что цвет шрифта комментария - синий, цвет фона - светло-зеленый, а сам шрифт - Comic Sans.
Начнем изменения в нашем коде Lexer.cpp и Lexer.h. (Можно переименовать эти файлы в LexerZ.h и LexerZ.cpp).
Первым делом надо определить описание для этого стиля.
QString LexerZ::description(int style) const
{
switch (style)
{
case Comment:
return "Comment";
case Default:
return "Default";
}
return QString(style);
}* This source code was highlighted with Source Code Highlighter.
Фактически нам это описание не нужно, но QScintilla просит, раз просит - значит нужно.
Дальше определим цвет шрифта для комментария:
QColor LexerZ::defaultColor(int style) const
{
if (style == Comment)
{
return Qt::blue;
}
return QsciLexer::defaultColor(style);
}* This source code was highlighted with Source Code Highlighter.
Теперь - цвет фона:
QColor LexerZ::defaultPaper(int style) const
{
if (style == Comment)
{
return QColor("light-green");
}
return QsciLexer::defaultPaper(style);
}
* This source code was highlighted with Source Code Highlighter.
Далее определим шрифт:
QFont LexerZ::defaultFont(int style) const
{
QFont f;
if (style == Comment)
{
f.setFamily("Comic Sans");
}
else
{
f = QsciLexer::defaultFont(style);
}
return f;
}
* This source code was highlighted with Source Code Highlighter.
Вот мы и определили цвета для нашего комментария. Этого кода, впрочем, недостаточно для того, чтобы наш комментарий ** начал подсвечиваться. Нужно четко указать Scintille когда у нас начинается комментарий и какой стиль нужно использовать. Для этого нужно написать код в функции void LexerZ::styleText(int start, int end)
Об этом - в следующем выпуске.
Комментариев нет:
Отправить комментарий