| 128 | } |
| 129 | |
| 130 | AsmHighlighter::AsmHighlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) { |
| 131 | HighlightingRule rule; |
| 132 | bool darkMode = isRunningInDarkMode(); |
| 133 | |
| 134 | addressFormat.setForeground(QColor(darkMode ? "#888" : "#444")); |
| 135 | addressFormat.setFontWeight(QFont::Bold); |
| 136 | |
| 137 | watchRFormat.setForeground(QColor("#008000")); |
| 138 | watchRFormat.setFontWeight(QFont::Bold); |
| 139 | watchWFormat.setForeground(QColor("#808000")); |
| 140 | watchWFormat.setFontWeight(QFont::Bold); |
| 141 | breakPFormat.setForeground(QColor("#800000")); |
| 142 | breakPFormat.setFontWeight(QFont::Bold); |
| 143 | |
| 144 | mnemonicFormat.setForeground(QColor(darkMode ? "darkorange" : "darkblue")); |
| 145 | |
| 146 | symbolFormat.setFontWeight(disasm.bold_sym ? QFont::DemiBold : QFont::Normal); |
| 147 | rule.pattern = QRegularExpression("\\b\\w+\\b"); |
| 148 | rule.format = symbolFormat; |
| 149 | highlightingRules.append(rule); |
| 150 | |
| 151 | decimalFormat.setForeground(QColor(darkMode ? "lime" : "green")); |
| 152 | rule.pattern = QRegularExpression("\\b\\d+\\b"); |
| 153 | rule.format = decimalFormat; |
| 154 | highlightingRules.append(rule); |
| 155 | |
| 156 | registerFormat.setForeground(QColor(darkMode ? "magenta" : "purple")); |
| 157 | rule.pattern = QRegularExpression("\\b([abcdehlirmpz]|af|bc|de|hl|sp|i[xy][hl]?|mb|n[cz]|p[eo])\\b", QRegularExpression::CaseInsensitiveOption); |
| 158 | rule.format = registerFormat; |
| 159 | highlightingRules.append(rule); |
| 160 | |
| 161 | hexFormat.setForeground(QColor(darkMode ? "lime" : "green")); |
| 162 | rule.pattern = QRegularExpression("\\$[0-9a-fA-F]+\\b"); |
| 163 | rule.format = hexFormat; |
| 164 | highlightingRules.append(rule); |
| 165 | |
| 166 | parenFormat.setForeground(QColor(darkMode ? "lightblue" : "navy")); |
| 167 | rule.pattern = QRegularExpression("[()]"); |
| 168 | rule.format = parenFormat; |
| 169 | highlightingRules.append(rule); |
| 170 | |
| 171 | labelPattern = QRegularExpression(QStringLiteral("^(%1)\\s+(\\S+):") |
| 172 | .arg(disasm.addr ? QStringLiteral("[0-9a-fA-F]+") : QString())); |
| 173 | instructionPattern = QRegularExpression(QStringLiteral("^(%1) ([ R])([ W])([ X])\\s+(%2)\\s+(\\S+)") |
| 174 | .arg(disasm.addr ? QStringLiteral("[0-9a-fA-F]+") : QString(), |
| 175 | disasm.bytes ? QStringLiteral("[0-9a-fA-F]+") : QStringLiteral(" "))); |
| 176 | } |
| 177 | |
| 178 | void AsmHighlighter::highlightBlock(const QString &text) { |
| 179 | QRegularExpressionMatch match; |
nothing calls this directly
no test coverage detected