From 5ad537f261685d2898082f46b9d66021b417dc93 Mon Sep 17 00:00:00 2001 From: Ben S Date: Wed, 5 Nov 2014 12:02:17 +0000 Subject: [PATCH] Don't start number/identifier runs halfway through a word --- rust.mm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rust.mm b/rust.mm index 8d331cd..cea72a9 100644 --- a/rust.mm +++ b/rust.mm @@ -423,6 +423,7 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) SInt32 runLen; UniChar ch; + bool wordchr = false; while ((ch = iter.GetNextChar())) { if (ch == '"') @@ -527,7 +528,7 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) runStart = iter.Offset(); } - else if (isupper(ch)) + else if (!wordchr && isupper(ch)) { iter--; if (!makeCodeRun(iter, runStart, *callbacks)) return noErr; @@ -537,7 +538,7 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) runStart = iter.Offset(); } - else if (isdigit(ch)) + else if (!wordchr && isdigit(ch)) { iter--; if (!makeCodeRun(iter, runStart, *callbacks)) return noErr; @@ -546,6 +547,8 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) if (!addRun(kBBLMNumberRunKind, runStart, runLen, *callbacks)) return noErr; runStart = iter.Offset(); } + + wordchr = isalpha(ch) || isdigit(ch); } makeCodeRun(iter, runStart, *callbacks);