Highlight macro_rules! definitions + arguments

This commit is contained in:
Ben S
2015-02-15 02:44:29 +00:00
parent 51e8755030
commit 82931045a2
2 changed files with 110 additions and 1 deletions

View File

@@ -87,7 +87,7 @@
<string>in</string>
<string>let</string>
<string>loop</string>
<string>macro_rules!</string>
<string>macro_rules</string>
<string>match</string>
<string>mod</string>
<string>mut</string>

109
rust.mm
View File

@@ -588,6 +588,104 @@ OSErr calculateRuns(BBLMParamBlock &params, 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 &params, 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))
{