aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authornyamatongwe <unknown>2009-01-05 11:06:39 +0000
committernyamatongwe <unknown>2009-01-05 11:06:39 +0000
commit5af4b19715f3a669c9b05ca18db43a4d44fcdd05 (patch)
tree639ebd400b73f99b337b9ed562db8b079e934ed1 /src
parent80ad7aef2685cc652e69c2f535ef202063bcf35d (diff)
downloadscintilla-mirror-5af4b19715f3a669c9b05ca18db43a4d44fcdd05.tar.gz
Update from FR 2483619.
Fix bug with "last-event:function" phrase.
Diffstat (limited to 'src')
-rw-r--r--src/LexProgress.cxx47
1 files changed, 24 insertions, 23 deletions
diff --git a/src/LexProgress.cxx b/src/LexProgress.cxx
index 902aa53d5..d4379f03c 100644
--- a/src/LexProgress.cxx
+++ b/src/LexProgress.cxx
@@ -39,19 +39,19 @@ static inline bool IsAWordStart(int ch) {
return (ch < 0x80) && (isalpha(ch) || ch == '_');
}
-enum SentenceStart { SetSentenceStart = 0xf, ResetSentenceStart = 0x10}; // true -> bit = 0
+enum SentenceStart { SetSentenceStart = 0xf, ResetSentenceStart = 0x10}; // true -> bit5 = 0
static void Colourise4glDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[],
Accessor &styler) {
- WordList &keywords1 = *keywordlists[0];
- WordList &keywords2 = *keywordlists[1];
- WordList &keywords3 = *keywordlists[2];
- //WordList &keywords4 = *keywordlists[3];
- //WordList &keywords5 = *keywordlists[4];
+ WordList &keywords1 = *keywordlists[0]; // regular keywords
+ WordList &keywords2 = *keywordlists[1]; // block opening keywords, only when SentenceStart
+ WordList &keywords3 = *keywordlists[2]; // block opening keywords
+ //WordList &keywords4 = *keywordlists[3]; // preprocessor keywords. Not implemented
+
int visibleChars = 0;
- int mask;
+ int sentenceStartState; // true -> bit5 = 0
StyleContext sc(startPos, length, initStyle, styler);
@@ -86,21 +86,21 @@ static void Colourise4glDoc(unsigned int startPos, int length, int initStyle, Wo
}
}
// Determine if a new state should be terminated.
- mask = sc.state & 0x10;
+ sentenceStartState = sc.state & 0x10;
switch (sc.state & 0xf) {
case SCE_4GL_OPERATOR:
- sc.SetState(SCE_4GL_DEFAULT | mask);
+ sc.SetState(SCE_4GL_DEFAULT | sentenceStartState);
break;
case SCE_4GL_NUMBER:
if (!(IsADigit(sc.ch))) {
- sc.SetState(SCE_4GL_DEFAULT | mask);
+ sc.SetState(SCE_4GL_DEFAULT | sentenceStartState);
}
break;
case SCE_4GL_IDENTIFIER:
if (!IsAWordChar(sc.ch) && sc.ch != '-') {
char s[1000];
sc.GetCurrentLowered(s, sizeof(s));
- if ((((sc.state & 0x10) == 0) && keywords2.InList(s)) || keywords3.InList(s)) {
+ if ((sentenceStartState == 0) && keywords2.InList(s) || keywords3.InList(s)) {
sc.ChangeState(SCE_4GL_BLOCK | ResetSentenceStart);
}
else if (keywords1.InList(s)) {
@@ -123,17 +123,17 @@ static void Colourise4glDoc(unsigned int startPos, int length, int initStyle, Wo
if (sc.atLineStart) {
sc.SetState(SCE_4GL_DEFAULT & SetSentenceStart);
} else if (sc.ch == '*' && sc.chNext == '/') {
- sc.ForwardSetState(SCE_4GL_DEFAULT | mask);
+ sc.ForwardSetState(SCE_4GL_DEFAULT | sentenceStartState);
}
break;
case SCE_4GL_STRING:
if (sc.ch == '\"') {
- sc.ForwardSetState(SCE_4GL_DEFAULT | mask);
+ sc.ForwardSetState(SCE_4GL_DEFAULT | sentenceStartState);
}
break;
case SCE_4GL_CHARACTER:
if (sc.ch == '\'') {
- sc.ForwardSetState(SCE_4GL_DEFAULT | mask);
+ sc.ForwardSetState(SCE_4GL_DEFAULT | sentenceStartState);
}
break;
default:
@@ -141,7 +141,7 @@ static void Colourise4glDoc(unsigned int startPos, int length, int initStyle, Wo
if (sc.ch == '*' && sc.chNext == '/') {
sc.Forward();
if ((sc.state & 0xf) == SCE_4GL_COMMENT1) {
- sc.ForwardSetState(SCE_4GL_DEFAULT | mask);
+ sc.ForwardSetState(SCE_4GL_DEFAULT | sentenceStartState);
}
else
sc.SetState((sc.state & 0x1f) - 1);
@@ -153,14 +153,14 @@ static void Colourise4glDoc(unsigned int startPos, int length, int initStyle, Wo
}
// Determine if a new state should be entered.
- mask = sc.state & 0x10;
+ sentenceStartState = sc.state & 0x10;
if ((sc.state & 0xf) == SCE_4GL_DEFAULT) {
if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
sc.SetState(SCE_4GL_NUMBER | ResetSentenceStart);
- } else if (IsAWordStart(sc.ch) || (sc.ch == '@')) {
- sc.SetState(SCE_4GL_IDENTIFIER | mask);
+ } else if (IsAWordStart(sc.ch) || sc.ch == '@') {
+ sc.SetState(SCE_4GL_IDENTIFIER | sentenceStartState);
} else if (sc.ch == '/' && sc.chNext == '*') {
- sc.SetState(SCE_4GL_COMMENT1 | mask);
+ sc.SetState(SCE_4GL_COMMENT1 | sentenceStartState);
sc.Forward();
} else if (sc.ch == '\"') {
sc.SetState(SCE_4GL_STRING | ResetSentenceStart);
@@ -176,9 +176,12 @@ static void Colourise4glDoc(unsigned int startPos, int length, int initStyle, Wo
} else if ((sc.ch == '.' || sc.ch == ':' || sc.ch == '}') && (sc.chNext == ' ' || sc.chNext == '\t' || sc.chNext == '\n' || sc.chNext == '\r')) {
sc.SetState(sc.state & SetSentenceStart);
} else if (isoperator(static_cast<char>(sc.ch))) {
+ /* This code allows highlight of handles. Alas, it would cause the frase "last-event:function"
+ to be recognized as a BlockBegin
+
if (sc.ch == ':')
sc.SetState(SCE_4GL_OPERATOR & SetSentenceStart);
- else
+ else */
sc.SetState(SCE_4GL_OPERATOR | ResetSentenceStart);
}
}
@@ -271,6 +274,4 @@ static const char * const FglWordLists[] = {
0,
};
-LexerModule lmProgress(SCLEX_PS, Colourise4glDoc, "progress", Fold4glDoc, FglWordLists);
-
-
+LexerModule lmProgress(SCLEX_PROGRESS, Colourise4glDoc, "progress", Fold4glDoc, FglWordLists);