From 82931045a244712297ee1e83368728e0b2b6986e Mon Sep 17 00:00:00 2001 From: Ben S Date: Sun, 15 Feb 2015 02:44:29 +0000 Subject: [PATCH] Highlight macro_rules! definitions + arguments --- info.plist | 2 +- rust.mm | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 1 deletion(-) diff --git a/info.plist b/info.plist index 8309356..a6a3276 100644 --- a/info.plist +++ b/info.plist @@ -87,7 +87,7 @@ in let loop - macro_rules! + macro_rules match mod mut diff --git a/rust.mm b/rust.mm index 63b883e..7612951 100644 --- a/rust.mm +++ b/rust.mm @@ -588,6 +588,104 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) iter--; } } + else if (ch == 'a') + { + // I am ashamed of how nested this code is. + ch = iter.GetNextChar(); + if (ch == 'c') + { + ch = iter.GetNextChar(); + if (ch == 'r') + { + ch = iter.GetNextChar(); + if (ch == 'o') + { + ch = iter.GetNextChar(); + if (ch == '_') + { + ch = iter.GetNextChar(); + if (ch == 'r') + { + ch = iter.GetNextChar(); + if (ch == 'u') + { + ch = iter.GetNextChar(); + if (ch == 'l') + { + ch = iter.GetNextChar(); + if (ch == 'e') + { + ch = iter.GetNextChar(); + if (ch == 's') + { + ch = iter.GetNextChar(); + if (ch == '!') + { + ch = iter.GetNextChar(); + if (isspace(ch)) + { + if (!makeCodeRun(iter, runStart, *callbacks)) return noErr; + runStart = iter.Offset(); + runLen = skipWhitespace(iter); + runLen += skipWord(iter); + if (!addRun(functionColour, runStart, runLen, *callbacks)) return noErr; + runStart = iter.Offset(); + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } else if (ch) { iter--; @@ -722,6 +820,17 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) if (!addRun(attributeColour, runStart, runLen, *callbacks)) return noErr; runStart = iter.Offset(); } + + else if (ch == '$') + { + iter--; + if (!makeCodeRun(iter, runStart, *callbacks)) return noErr; + runStart = iter.Offset(); + iter++; + runLen = skipWord(iter) + 1; + if (runLen > 1 && !addRun(kBBLMVariableRunKind, runStart, runLen, *callbacks)) return noErr; + runStart = iter.Offset(); + } else if (!wordchr && isupper(ch)) {