From 41fcd43e6d688797b3a38ef40d6d17631926bf37 Mon Sep 17 00:00:00 2001 From: Ben S Date: Sun, 9 Nov 2014 21:06:15 +0000 Subject: [PATCH] Syntax highlight file includes --- rust.mm | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/rust.mm b/rust.mm index 56b1811..5298c9b 100644 --- a/rust.mm +++ b/rust.mm @@ -153,6 +153,27 @@ SInt32 skipAttribute(BBLMTextIterator &iter) return length; } +SInt32 skipUse(BBLMTextIterator &iter) +{ + SInt32 length = 0; + UniChar ch; + + while ((ch = iter.GetNextChar())) + { + if (islower(ch) || ch == ':' || ch == '_') + { + length++; + } + else + { + iter--; + break; + } + } + + return length; +} + SInt32 skipNumber(BBLMTextIterator &iter) { UInt32 length = 0; @@ -493,7 +514,7 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) } } - else if (ch == 'f') + else if (!wordchr && ch == 'f') { ch = iter.GetNextChar(); if (ch == 'n') @@ -511,6 +532,37 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) } } + else if (!wordchr && ch == 'u') + { + ch = iter.GetNextChar(); + if (ch == 's') + { + ch = iter.GetNextChar(); + if (ch == 'e') + { + if (!makeCodeRun(iter, runStart, *callbacks)) return noErr; + runStart = iter.Offset(); + runLen = skipWhitespace(iter); + runLen += skipUse(iter); + if (!addRun(kBBLMFileIncludeRunKind, runStart, runLen, *callbacks)) return noErr; + + runStart = iter.Offset(); + runLen = skipWord(iter); + if (!addRun(identifierColour, runStart, runLen, *callbacks)) return noErr; + + runStart = iter.Offset(); + } + else if (ch) + { + iter--; + } + } + else if (ch) + { + iter--; + } + } + else if (ch == '/') { ch = iter.GetNextChar();