diff options
author | nyamatongwe <unknown> | 2000-05-20 13:14:41 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2000-05-20 13:14:41 +0000 |
commit | 45674820f1033b465e8c40c7ba3e0988b438c339 (patch) | |
tree | b09e812aee4aef0bd71b9c49b0b9016c07498026 /src | |
parent | 02e0afd5a9d78f997df5e498550e5b2832ca5aa0 (diff) | |
download | scintilla-mirror-45674820f1033b465e8c40c7ba3e0988b438c339.tar.gz |
Lexer changes from Philippe.
Diffstat (limited to 'src')
-rw-r--r-- | src/LexCPP.cxx | 20 | ||||
-rw-r--r-- | src/LexHTML.cxx | 7 | ||||
-rw-r--r-- | src/LexVB.cxx | 43 |
3 files changed, 70 insertions, 0 deletions
diff --git a/src/LexCPP.cxx b/src/LexCPP.cxx index 4f042bd61..d62375e9c 100644 --- a/src/LexCPP.cxx +++ b/src/LexCPP.cxx @@ -118,6 +118,15 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo } else if (ch == '#') { styler.ColourTo(i-1, state); state = SCE_C_PREPROCESSOR; +#ifdef COLORIZE_ALL_PREPROC /* PL 2000/05/18 */ +#else /* OLD PL 2000/05/18 */ + // Skip whitespace between # and preprocessor word + do { + i++; + ch = chNext; + chNext = styler.SafeGetCharAt(i + 1); + } while (isspace(ch)); +#endif /* OLD PL 2000/05/18 */ } else if (isoperator(ch)) { styler.ColourTo(i-1, state); styler.ColourTo(i, SCE_C_OPERATOR); @@ -140,8 +149,10 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo state = SCE_C_STRING; } else if (ch == '\'') { state = SCE_C_CHARACTER; +#ifdef OLD /* PL 2000/05/18 -- A preprocessor symbol shouldn't start in the middle of a word! */ } else if (ch == '#') { state = SCE_C_PREPROCESSOR; +#endif /* OLD PL 2000/05/18 */ } else if (isoperator(ch)) { styler.ColourTo(i, SCE_C_OPERATOR); if ((ch == '{') || (ch == '}')) { @@ -151,10 +162,17 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo } } else { if (state == SCE_C_PREPROCESSOR) { +#ifdef COLORIZE_ALL_PREPROC /* PL 2000/05/18 -- Stop after the preprocessor word */ if ((ch == '\r' || ch == '\n') && !(chPrev == '\\' || chPrev == '\r')) { styler.ColourTo(i-1, state); state = SCE_C_DEFAULT; } +#else /* OLD PL 2000/05/18 */ + if (isspace(ch)) { + styler.ColourTo(i-1, state); + state = SCE_C_DEFAULT; + } +#endif /* OLD PL 2000/05/18 */ } else if (state == SCE_C_COMMENT) { if (ch == '/' && chPrev == '*') { if (((i > styler.GetStartSegment() + 2) || ( @@ -230,8 +248,10 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo state = SCE_C_STRING; } else if (ch == '\'') { state = SCE_C_CHARACTER; +#ifdef OLD /* PL 2000/05/18 -- A preprocessor symbol SHOULD be the first non-white char. of the line! */ } else if (ch == '#') { state = SCE_C_PREPROCESSOR; +#endif /* OLD PL 2000/05/18 */ } else if (iswordstart(ch)) { state = SCE_C_WORD; } else if (isoperator(ch)) { diff --git a/src/LexHTML.cxx b/src/LexHTML.cxx index 653aa4653..0b31cba39 100644 --- a/src/LexHTML.cxx +++ b/src/LexHTML.cxx @@ -353,6 +353,13 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty styler.ColourTo(i, state); state = SCE_H_DEFAULT; } +#ifdef OLD /* PL 2000/05/18 -- An bad entity may stop on a non-alphabetic character */ +#else /* OLD PL 2000/05/18 */ + if (ch != '#' && !isalnum(ch)) { // Should check that '#' follows '&', but it is unlikely anyway... + styler.ColourTo(i, SCE_H_TAGUNKNOWN); + state = SCE_H_DEFAULT; + } +#endif /* OLD PL 2000/05/18 */ } else if (state == SCE_H_TAGUNKNOWN) { if (!ishtmlwordchar(ch) && ch != '/' && ch != '-') { int eClass = classifyTagHTML(styler.GetStartSegment(), i - 1, keywords, styler); diff --git a/src/LexVB.cxx b/src/LexVB.cxx index acc3b0d54..cdda470b5 100644 --- a/src/LexVB.cxx +++ b/src/LexVB.cxx @@ -20,20 +20,37 @@ static int classifyWordVB(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler) { char s[100]; +#ifdef OLD /* PL 2000/05/18 -- Include hexadecimal number */ bool wordIsNumber = isdigit(styler[start]) || (styler[start] == '.'); +#else /* OLD PL 2000/05/18 */ + bool wordIsNumber = isdigit(styler[start]) || (styler[start] == '.') || + (styler[start] == '&' && tolower(styler[start+1]) == 'h'); +#endif /* OLD PL 2000/05/18 */ for (unsigned int i = 0; i < end - start + 1 && i < 30; i++) { s[i] = static_cast<char>(tolower(styler[start + i])); +#ifdef OLD /* PL 2000/05/18 -- Little optimization */ s[i + 1] = '\0'; } +#else /* OLD PL 2000/05/18 */ + } + s[i] = '\0'; +#endif /* OLD PL 2000/05/18 */ char chAttr = SCE_C_DEFAULT; if (wordIsNumber) chAttr = SCE_C_NUMBER; else { +#ifdef OLD /* PL 2000/05/18 */ if (keywords.InList(s)) { chAttr = SCE_C_WORD; if (strcmp(s, "rem") == 0) chAttr = SCE_C_COMMENTLINE; } +#else /* OLD PL 2000/05/18 */ + if (strcmp(s, "rem") == 0) + chAttr = SCE_C_COMMENTLINE; + else if (keywords.InList(s)) + chAttr = SCE_C_WORD; +#endif /* OLD PL 2000/05/18 */ } styler.ColourTo(end, chAttr); if (chAttr == SCE_C_COMMENTLINE) @@ -73,6 +90,18 @@ static void ColouriseVBDoc(unsigned int startPos, int length, int initStyle, } else if (ch == '\"') { styler.ColourTo(i - 1, state); state = SCE_C_STRING; +#ifdef OLD /* PL 2000/05/18 */ +#else /* OLD PL 2000/05/18 */ + } else if (ch == '#') { + styler.ColourTo(i - 1, state); + state = SCE_C_PREPROCESSOR; + } else if (ch == '&' && tolower(chNext) == 'h') { + styler.ColourTo(i - 1, state); + state = SCE_C_WORD; + } else if (isoperator(ch)) { + styler.ColourTo(i - 1, state); + styler.ColourTo(i, SCE_C_OPERATOR); +#endif /* OLD PL 2000/05/18 */ } } else if (state == SCE_C_WORD) { if (!iswordchar(ch)) { @@ -82,6 +111,12 @@ static void ColouriseVBDoc(unsigned int startPos, int length, int initStyle, state = SCE_C_COMMENTLINE; } else if (ch == '\"') { state = SCE_C_STRING; +#ifdef OLD /* PL 2000/05/18 */ +#else /* OLD PL 2000/05/18 */ + } else if (isoperator(ch)) { + styler.ColourTo(i - 1, state); + styler.ColourTo(i, SCE_C_OPERATOR); +#endif /* OLD PL 2000/05/18 */ } } } @@ -100,6 +135,14 @@ static void ColouriseVBDoc(unsigned int startPos, int length, int initStyle, ch = chNext; chNext = styler.SafeGetCharAt(i + 1); } +#ifdef OLD /* PL 2000/05/18 */ +#else /* OLD PL 2000/05/18 */ + } else if (state == SCE_C_PREPROCESSOR) { + if (ch == '\r' || ch == '\n') { + styler.ColourTo(i - 1, state); + state = SCE_C_DEFAULT; + } +#endif /* OLD PL 2000/05/18 */ } if (state == SCE_C_DEFAULT) { // One of the above succeeded if (ch == '\'') { |