namespace lyx {
namespace frontend {
-LaTeXHighlighter::LaTeXHighlighter(QTextDocument * parent)
- : QSyntaxHighlighter(parent)
+
+LaTeXHighlighter::LaTeXHighlighter(QTextDocument * parent, bool at_letter)
+ : QSyntaxHighlighter(parent), at_letter_(at_letter)
{
- keywordFormat.setForeground(Qt::darkBlue);
+ auto blend = [](QColor color1, QColor color2) {
+ int r = 0.5 * (color1.red() + color2.red());
+ int g = 0.5 * (color1.green() + color2.green());
+ int b = 0.5 * (color1.blue() + color2.blue());
+ return QColor(r, g, b);
+ };
+ QPalette palette = QPalette();
+ QColor text_color = palette.color(QPalette::Active, QPalette::Text);
+ keywordFormat.setForeground(blend(Qt::blue, text_color));
keywordFormat.setFontWeight(QFont::Bold);
- commentFormat.setForeground(Qt::darkGray);
- mathFormat.setForeground(Qt::red);
+ commentFormat.setForeground(palette.color(QPalette::Disabled,
+ QPalette::Text));
+ mathFormat.setForeground(blend(Qt::red, text_color));
warningFormat.setForeground(Qt::red);
warningFormat.setFontWeight(QFont::Bold);
}
startIndex = exprStartDispMath.indexIn(text, startIndex + length);
}
// \whatever
- static const QRegExp exprKeyword("\\\\[A-Za-z]+");
+ static const QRegExp exprKeywordAtOther("\\\\[A-Za-z]+");
+ // \wh@tever
+ static const QRegExp exprKeywordAtLetter("\\\\[A-Za-z@]+");
+ QRegExp const & exprKeyword = at_letter_ ? exprKeywordAtLetter
+ : exprKeywordAtOther;
index = exprKeyword.indexIn(text);
while (index >= 0) {
int length = exprKeyword.matchedLength();