| 115 | /* Highlighter */ |
| 116 | |
| 117 | BasicHighlighter::BasicHighlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) |
| 118 | { |
| 119 | HighlightingRule rule; |
| 120 | bool darkMode = isRunningInDarkMode(); |
| 121 | |
| 122 | numberFormat.setForeground(QColor(darkMode ? "lime" : "darkmagenta")); |
| 123 | rule.pattern = QRegularExpression(R"((((\b[0-9]+)?\.)?\b[0-9]+(ᴇ⁻?[0-9]+)?))"); |
| 124 | rule.format = numberFormat; |
| 125 | highlightingRules.append(rule); |
| 126 | |
| 127 | variableFormat.setForeground(QColor(darkMode ? "yellow" : "darkyellow")); |
| 128 | rule.pattern = QRegularExpression(R"((\[[A-J]\])|([A-Zθ])|([\|?uvw])|((GDB|Str|Pic|Img)[0-9])|([XYr][₁₂₃₄₅₆₇₈₉]ᴛ?)|([XY](min|max|scl|res)))"); |
| 129 | rule.format = variableFormat; |
| 130 | highlightingRules.append(rule); |
| 131 | |
| 132 | listFormat.setForeground(QColor(darkMode ? "lightblue" : "blue")); |
| 133 | rule.pattern = QRegularExpression("(⌊[A-Zθ][A-Z0-9θ]{0,4})|(L[₁₂₃₄₅₆₇₈₉])"); |
| 134 | rule.format = listFormat; |
| 135 | highlightingRules.append(rule); |
| 136 | |
| 137 | keywordFormat.setForeground(QColor(darkMode ? "darkorange" : "darkblue")); |
| 138 | rule.pattern = QRegularExpression("\\b(Else|End|For|Goto|EndIf|ElseIf|End!If|If|!If|Lbl|Repeat|Return|Stop|Then|While)\\b"); |
| 139 | rule.format = keywordFormat; |
| 140 | highlightingRules.append(rule); |
| 141 | |
| 142 | builtinFormat.setForeground(darkMode ? Qt::cyan : Qt::darkCyan); |
| 143 | QStringList builtinPatterns; |
| 144 | builtinPatterns << "\\bAns\\b" << "\\bAsmComp\\b" << "\\bAsm(8[34]CE?)?Prgm\\b" <<"\\bAUTO\\b" |
| 145 | << "\\bAxesOff\\b" << "\\bAxesOn\\b" << "\\bBackgroundOn\\b" << "\\bBackgroundOff\\b" |
| 146 | << "\\bCLASSIC\\b" << "\\bClockOff\\b" << "\\bClockOn\\b" << "\\bConnected\\b" << "\\bCoordOff\\b" |
| 147 | << "\\bCoordOn\\b" << "\\bDiagnosticOff\\b" << "\\bDiagnosticOn\\b" << "\\bDot\\b" << "\\beval\\b" |
| 148 | << "\\bExprOff\\b" << "\\bExprOn\\b" << "\\bFnOff\\b" << "\\bFnOn\\b" << "\\bGridOff\\b" |
| 149 | << "\\bGridOn\\b" << "\\bHistogram\\b" << "\\bHoriz\\b" << "\\bLabelOff\\b" << "\\bLabelOn\\b" |
| 150 | << "\\bMATHPRINT\\b" << "\\bNormal\\b" << "\\bParam\\b" << "\\bPlot1\\b" << "\\bPlot2\\b" |
| 151 | << "\\bPlot3\\b" << "\\bPlotsOff\\b" << "\\bPlotsOn\\b" << "\\bPolar\\b" << "\\bPolarGC\\b" |
| 152 | << "\\bprgm\\b" << "\\bReal\\b" << "\\bSetUpEditor\\b" << "\\bWeb\\b" << "\\bZ-Test\\b" |
| 153 | << "\\bZBox\\b" << "\\bZDecimal\\b" << "\\bZFrac\\b" << "\\bZInteger\\b" << "\\bZInterval\\b" |
| 154 | << "\\bZoom\\b" << "\\bZoomFit\\b" << "\\bZoomRcl\\b" << "\\bZoomStat\\b" << "\\bZoomSto\\b" |
| 155 | << "\\bZPrevious\\b" << "\\bZQuadrant1\\b" << "\\bZSquare\\b" << "\\bZStandard\\b" << "\\bZTrig\\b" |
| 156 | << "\\babs\\b" << "\\bangle\\b" << "\\bANOVA\\b" << "\\bAnswer\\b" << "\\bArchive\\b" << "\\bAsm\\b" |
| 157 | << "\\baugment\\b" << "\\bbal\\b" << "\\bbinomcdf\\b" << "\\bbinompdf\\b" << "\\bBoxplot\\b" << "\\bChange\\b" |
| 158 | << "\\bcheckTmr\\b" << "\\bCircle\\b" << "\\bClear\\b" << "\\bClrAllLists\\b" << "\\bClrDraw\\b" |
| 159 | << "\\bClrHome\\b" << "\\bEffÉcran\\b" << "\\bClrList\\b" << "\\bClrTable\\b" << "\\bconj\\b" |
| 160 | << "\\bcos\\b" << "\\bcosh\\b" << "\\bCubicReg\\b" << "\\bcumSum\\b" << "\\bdayOfWk\\b" << "\\bdbd\\b" |
| 161 | << "\\bDec\\b" << "\\bDEC\\b" << "\\bDegree\\b" << "\\bDelVar\\b" << "\\bDependAsk\\b" |
| 162 | << "\\bDependAuto\\b" << "\\bdet\\b" << "\\bdim\\b" << "\\bDisp\\b" << "\\bDispGraph\\b" |
| 163 | << "\\bDispTable\\b" << "\\bDMS\\b" << "\\bDrawF\\b" << "\\bDrawInv\\b" << "\\bDS\\b" << "\\bEff\\b" |
| 164 | << "\\bEng\\b" << "\\bEntries\\b" << "\\bEqu\\b" << "\\bExecLib\\b" << "\\bexpr\\b" << "\\bExpReg\\b" |
| 165 | << "\\bFcdf\\b" << "\\bFill\\b" << "\\bFix\\b" << "\\bFloat\\b" << "\\bfMax\\b" << "\\bfMin\\b" |
| 166 | << "\\bfnInt\\b" << "\\bfPart\\b" << "\\bFpdf\\b" << "\\bFrac\\b" << "\\bFRAC\\b" << "\\bFull\\b" |
| 167 | << "\\bFunc\\b" << "\\bGarbageCollect\\b" << "\\bgcd\\b" << "\\bgeometcdf\\b" << "\\bgeometpdf\\b" |
| 168 | << "\\bGet\\b" << "\\bGetCalc\\b" << "\\bgetDate\\b" << "\\bgetDtFmt\\b" << "\\bgetDtStr\\b" |
| 169 | << "\\bgetKey\\b" << "\\bgetTime\\b" << "\\bgetTmFmt\\b" << "\\bgetTmStr\\b" << "\\bGraphStyle\\b" |
| 170 | << "\\bHorizontal\\b" << "\\bidentity\\b" << "\\bimag\\b" << "\\bIn\\b" << "\\bIndpntAsk\\b" |
| 171 | << "\\bIndpntAuto\\b" << "\\bInput\\b" << "\\binString\\b" << "\\bint\\b" << "\\binvNorm\\b" |
| 172 | << "\\binvT\\b" << "\\biPart\\b" << "\\birr\\b" << "\\bIS\\b" << "\\bIsClockOn\\b" << "\\blcm\\b" |
| 173 | << "\\blength\\b" << "\\bLine\\b" << "\\bLinReg\\b" << "\\bLinRegTInt\\b" << "\\bLinRegTTest\\b" |
| 174 | << "\\blist\\b" << "\\bList\\b" << "\\bln\\b" << "\\bLnReg\\b" << "\\blog\\b" << "\\blogBASE\\b" |
nothing calls this directly
no test coverage detected