Subtly change the way 'use' lines are highlighted
This commit is contained in:
64
rust.mm
64
rust.mm
@@ -8,7 +8,7 @@
|
||||
#include "BBLMInterface.h"
|
||||
#include "BBLMTextIterator.h"
|
||||
|
||||
#define kMaxLineLength 256
|
||||
#define kMaxLineLength 256
|
||||
|
||||
static NSString* const identifierColour = @"me.bsago.bblm.rust.identifier";
|
||||
static NSString* const attributeColour = @"me.bsago.bblm.rust.attribute";
|
||||
@@ -154,27 +154,6 @@ 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 > 0 && isdigit(ch)))
|
||||
{
|
||||
length++;
|
||||
}
|
||||
else
|
||||
{
|
||||
iter--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return length;
|
||||
}
|
||||
|
||||
SInt32 skipNumber(BBLMTextIterator &iter)
|
||||
{
|
||||
UInt32 length = 0;
|
||||
@@ -360,7 +339,7 @@ SInt32 scanForSymbol(BBLMTextIterator &iter,
|
||||
info.fNameStart = tokenOffset;
|
||||
info.fNameLength = nameLen;
|
||||
bblmAddFunctionToList(callbacks, params.fFcnParams.fFcnList, info, &funIndex);
|
||||
|
||||
bblmAddFoldRange(callbacks, info.fFunctionStart, funLen, kBBLMFunctionAutoFold);
|
||||
iter += (keywordLen + whitespaceLen);
|
||||
return info.fFunctionEnd;
|
||||
}
|
||||
@@ -628,17 +607,44 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks)
|
||||
ch = iter.GetNextChar();
|
||||
if (isspace(ch))
|
||||
{
|
||||
skipWhitespace(iter);
|
||||
if (!makeCodeRun(iter, runStart, *callbacks)) return noErr;
|
||||
|
||||
runStart = iter.Offset();
|
||||
runLen = skipWhitespace(iter);
|
||||
runLen += skipUse(iter);
|
||||
runLen = 0;
|
||||
bool spacey = false;
|
||||
|
||||
while ((ch = iter.GetNextChar()))
|
||||
{
|
||||
if (spacey && isupper(ch))
|
||||
{
|
||||
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();
|
||||
runLen = 0;
|
||||
}
|
||||
else if (ch == ';' || ch == '\n')
|
||||
{
|
||||
iter--;
|
||||
if (!addRun(kBBLMFileIncludeRunKind, runStart, runLen, *callbacks)) return noErr;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
spacey = isspace(ch) || ch == ':' || ch == '{';
|
||||
runLen++;
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
@@ -820,4 +826,4 @@ extern "C"
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user