]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/LaTeXHighlighter.cpp
Use <cstdint> instead of <boost/cstdint.hpp>
[lyx.git] / src / frontends / qt4 / LaTeXHighlighter.cpp
index 9a9e5459a48bcb70bde0f51ef1516c21e669d066..5ab349e485ca7b541855e62c18597e07d6a0e84e 100644 (file)
 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);
 }
@@ -81,7 +91,11 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
                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();
@@ -91,14 +105,14 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
        // %comment
        // Treat a line as a comment starting at a percent sign
        // * that is the first character in a line
-       // * that is preceded by 
+       // * that is preceded by
        // ** an even number of backslashes
        // ** any character other than a backslash
-       QRegExp exprComment("(?:^|[^\\\\])(?:\\\\\\\\)*(%).*$"); 
+       QRegExp exprComment("(?:^|[^\\\\])(?:\\\\\\\\)*(%).*$");
        exprComment.indexIn(text);
        index = exprComment.pos(1);
        while (index >= 0) {
-               int const length = exprComment.matchedLength() 
+               int const length = exprComment.matchedLength()
                                 - (index - exprComment.pos(0));
                setFormat(index, length, commentFormat);
                exprComment.indexIn(text, index + length);