diff --git a/tools/lammps-gui/highlighter.cpp b/tools/lammps-gui/highlighter.cpp index 3e75cb56d4..84b9b0035f 100644 --- a/tools/lammps-gui/highlighter.cpp +++ b/tools/lammps-gui/highlighter.cpp @@ -18,18 +18,23 @@ Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) HighlightingRule rule; outputFormat.setForeground(Qt::darkYellow); + outputFormat.setFontWeight(QFont::Bold); readFormat.setForeground(Qt::magenta); + readFormat.setFontWeight(QFont::Bold); latticeFormat.setForeground(Qt::darkGreen); + latticeFormat.setFontWeight(QFont::Bold); particleFormat.setForeground(Qt::darkRed); + particleFormat.setFontWeight(QFont::Bold); setupFormat.setForeground(Qt::darkCyan); - runFormat.setForeground(Qt::green); + setupFormat.setFontWeight(QFont::Bold); + runFormat.setForeground(Qt::darkBlue); runFormat.setFontWeight(QFont::Bold); defineFormat.setForeground(Qt::darkMagenta); defineFormat.setFontWeight(QFont::Bold); numberFormat.setForeground(Qt::blue); commentFormat.setForeground(Qt::red); - stringFormat.setForeground(Qt::cyan); + stringFormat.setForeground(Qt::darkGreen); stringFormat.setFontWeight(QFont::Normal); const QString output_keywords[] = { @@ -202,11 +207,44 @@ Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) void Highlighter::highlightBlock(const QString &text) { + auto style = QRegularExpression("^(fix|compute|dump|set)\\s+(\\w+)\\s+(\\S+)\\s+(\\S+)").match(text); + auto force = QRegularExpression("^(atom_style|pair_style|bond_style|angle_style|dihedral_style|improper_style|kspace_style)\\s+(\\S+)").match(text); + auto defs = QRegularExpression("^(group|variable)\\s+(\\S+)\\s+(\\S+)").match(text); + auto undo = QRegularExpression("^(unfix|uncompute|undump)\\s+(\\w+)").match(text); + bool do_style = true; + bool do_force = true; + bool do_defs = true; + bool do_undo = true; for (const HighlightingRule &rule : qAsConst(highlightingRules)) { QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text); while (matchIterator.hasNext()) { QRegularExpressionMatch match = matchIterator.next(); - setFormat(match.capturedStart(), match.capturedLength(), rule.format); + // special treatment for fix/compute/dump styles etc. + if (style.hasMatch() && do_style) { + setFormat(style.capturedStart(1), style.capturedLength(1), defineFormat); + setFormat(style.capturedStart(2), style.capturedLength(2), numberFormat); + setFormat(style.capturedStart(3), style.capturedLength(3), stringFormat); + setFormat(style.capturedStart(4), style.capturedLength(4), runFormat); + do_style = false; + // special treatment for force styles styles + } else if (force.hasMatch() && do_force) { + setFormat(force.capturedStart(1), force.capturedLength(1), particleFormat); + setFormat(force.capturedStart(2), force.capturedLength(2), runFormat); + do_force = false; + // special treatment for undo commands + } else if (undo.hasMatch() && do_undo) { + setFormat(undo.capturedStart(1), undo.capturedLength(1), defineFormat); + setFormat(undo.capturedStart(2), undo.capturedLength(2), stringFormat); + do_undo = false; + // special treatment for some definitions + } else if (defs.hasMatch() && do_defs) { + setFormat(defs.capturedStart(1), defs.capturedLength(1), particleFormat); + setFormat(defs.capturedStart(2), defs.capturedLength(2), stringFormat); + setFormat(defs.capturedStart(3), defs.capturedLength(3), runFormat); + do_defs = false; + } else { + setFormat(match.capturedStart(), match.capturedLength(), rule.format); + } } } }