diff --git a/info.plist b/info.plist index 97086a6..b7f2ca7 100644 --- a/info.plist +++ b/info.plist @@ -46,10 +46,14 @@ me.bsago.bblm.rust.attribute #[attribute] me.bsago.bblm.rust.function - fn function + fn functionname + me.bsago.bblm.rust.module + mod modulename BBLMRunColors + me.bsago.bblm.rust.module + rgb(135, 2, 219) me.bsago.bblm.rust.lifetime rgb(133, 20, 75) me.bsago.bblm.rust.attribute diff --git a/rust.mm b/rust.mm index 5298c9b..a5ae9e9 100644 --- a/rust.mm +++ b/rust.mm @@ -14,6 +14,7 @@ static NSString* const identifierColour = @"me.bsago.bblm.rust.identifier"; static NSString* const attributeColour = @"me.bsago.bblm.rust.attribute"; static NSString* const lifetimeColour = @"me.bsago.bblm.rust.lifetime"; static NSString* const functionColour = @"me.bsago.bblm.rust.function"; +static NSString* const moduleColour = @"me.bsago.bblm.rust.module"; static bool addRun(NSString *kind, int start,int len , const BBLMCallbackBlock& bblm_callbacks) { @@ -513,6 +514,32 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) } } } + + else if (!wordchr && ch == 'm') + { + ch = iter.GetNextChar(); + if (ch == 'o') + { + ch = iter.GetNextChar(); + if (ch == 'd') + { + if (!makeCodeRun(iter, runStart, *callbacks)) return noErr; + runStart = iter.Offset(); + runLen = skipWhitespace(iter); + runLen += skipWord(iter); + if (!addRun(moduleColour, runStart, runLen, *callbacks)) return noErr; + runStart = iter.Offset(); + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } else if (!wordchr && ch == 'f') { @@ -610,6 +637,25 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) runStart = iter.Offset(); } + else if (!wordchr && (ch == '+' || ch == '-')) + { + ch = iter.GetNextChar(); + if (isdigit(ch)) + { + iter -= 2; + if (!makeCodeRun(iter, runStart, *callbacks)) return noErr; + iter++; + runStart = iter.Offset() - 1; + runLen = skipNumber(iter) + 1; + if (!addRun(kBBLMNumberRunKind, runStart, runLen, *callbacks)) return noErr; + runStart = iter.Offset(); + } + else if (ch) + { + iter--; + } + } + else if (!wordchr && isdigit(ch)) { iter--; @@ -627,7 +673,7 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) return noErr; } -static bool isSpecialKind(NSString* kind) +/*static bool isSpecialKind(NSString* kind) { return [kBBLMBlockCommentRunKind isEqualToString:kind] || [kBBLMLineCommentRunKind isEqualToString:kind] @@ -635,7 +681,7 @@ static bool isSpecialKind(NSString* kind) || [attributeColour isEqualToString:kind] || [lifetimeColour isEqualToString:kind] || [functionColour isEqualToString:kind]; -} +}*/ OSErr adjustRange(BBLMParamBlock ¶ms, const BBLMCallbackBlock &callbacks) { @@ -645,7 +691,7 @@ OSErr adjustRange(BBLMParamBlock ¶ms, const BBLMCallbackBlock &callbacks) SInt32 length; UInt32 index = params.fAdjustRangeParams.fStartIndex; - while (index > 0 && bblmGetRun(&callbacks, index, language, kind, charPos, length) && isSpecialKind(kind)) + while (index > 0 && bblmGetRun(&callbacks, index, language, kind, charPos, length)/* && isSpecialKind(kind)*/) { index--; }