tweaks to syntax highlighting
This commit is contained in:
@ -18,18 +18,23 @@ Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent)
|
|||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
outputFormat.setForeground(Qt::darkYellow);
|
outputFormat.setForeground(Qt::darkYellow);
|
||||||
|
outputFormat.setFontWeight(QFont::Bold);
|
||||||
readFormat.setForeground(Qt::magenta);
|
readFormat.setForeground(Qt::magenta);
|
||||||
|
readFormat.setFontWeight(QFont::Bold);
|
||||||
latticeFormat.setForeground(Qt::darkGreen);
|
latticeFormat.setForeground(Qt::darkGreen);
|
||||||
|
latticeFormat.setFontWeight(QFont::Bold);
|
||||||
particleFormat.setForeground(Qt::darkRed);
|
particleFormat.setForeground(Qt::darkRed);
|
||||||
|
particleFormat.setFontWeight(QFont::Bold);
|
||||||
setupFormat.setForeground(Qt::darkCyan);
|
setupFormat.setForeground(Qt::darkCyan);
|
||||||
runFormat.setForeground(Qt::green);
|
setupFormat.setFontWeight(QFont::Bold);
|
||||||
|
runFormat.setForeground(Qt::darkBlue);
|
||||||
runFormat.setFontWeight(QFont::Bold);
|
runFormat.setFontWeight(QFont::Bold);
|
||||||
defineFormat.setForeground(Qt::darkMagenta);
|
defineFormat.setForeground(Qt::darkMagenta);
|
||||||
defineFormat.setFontWeight(QFont::Bold);
|
defineFormat.setFontWeight(QFont::Bold);
|
||||||
|
|
||||||
numberFormat.setForeground(Qt::blue);
|
numberFormat.setForeground(Qt::blue);
|
||||||
commentFormat.setForeground(Qt::red);
|
commentFormat.setForeground(Qt::red);
|
||||||
stringFormat.setForeground(Qt::cyan);
|
stringFormat.setForeground(Qt::darkGreen);
|
||||||
stringFormat.setFontWeight(QFont::Normal);
|
stringFormat.setFontWeight(QFont::Normal);
|
||||||
|
|
||||||
const QString output_keywords[] = {
|
const QString output_keywords[] = {
|
||||||
@ -202,13 +207,46 @@ Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent)
|
|||||||
|
|
||||||
void Highlighter::highlightBlock(const QString &text)
|
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)) {
|
for (const HighlightingRule &rule : qAsConst(highlightingRules)) {
|
||||||
QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text);
|
QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text);
|
||||||
while (matchIterator.hasNext()) {
|
while (matchIterator.hasNext()) {
|
||||||
QRegularExpressionMatch match = matchIterator.next();
|
QRegularExpressionMatch match = matchIterator.next();
|
||||||
|
// 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);
|
setFormat(match.capturedStart(), match.capturedLength(), rule.format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Local Variables:
|
// Local Variables:
|
||||||
// c-basic-offset: 4
|
// c-basic-offset: 4
|
||||||
|
|||||||
Reference in New Issue
Block a user