aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornyamatongwe <unknown>2002-09-27 00:00:17 +0000
committernyamatongwe <unknown>2002-09-27 00:00:17 +0000
commitcdfba32efc5ccebea5e9952c383a82ef8ed64d2c (patch)
treed0193858585a1be656fc933fa9936cb7d09db26d
parenta0cfed60d8c3d4309a67cffa4de3a4b9dbd69a96 (diff)
downloadscintilla-mirror-cdfba32efc5ccebea5e9952c383a82ef8ed64d2c.tar.gz
Added case insensitive keywords version of C++ lexer, cppnocase.
-rw-r--r--include/SciLexer.h1
-rw-r--r--include/Scintilla.iface1
-rw-r--r--src/KeyWords.cxx1
-rw-r--r--src/LexCPP.cxx37
4 files changed, 31 insertions, 9 deletions
diff --git a/include/SciLexer.h b/include/SciLexer.h
index 1fca795ae..26d559902 100644
--- a/include/SciLexer.h
+++ b/include/SciLexer.h
@@ -49,6 +49,7 @@
#define SCLEX_MATLAB 32
#define SCLEX_SCRIPTOL 33
#define SCLEX_ASM 34
+#define SCLEX_CPPNOCASE 35
#define SCLEX_AUTOMATIC 1000
#define SCE_P_DEFAULT 0
#define SCE_P_COMMENTLINE 1
diff --git a/include/Scintilla.iface b/include/Scintilla.iface
index 06ef8e7cd..364e1d3a0 100644
--- a/include/Scintilla.iface
+++ b/include/Scintilla.iface
@@ -1452,6 +1452,7 @@ val SCLEX_BAAN=31
val SCLEX_MATLAB=32
val SCLEX_SCRIPTOL=33
val SCLEX_ASM=34
+val SCLEX_CPPNOCASE=35
# When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
# value assigned in sequence from SCLEX_AUTOMATIC+1.
diff --git a/src/KeyWords.cxx b/src/KeyWords.cxx
index 2cb2df25f..7f77f2fad 100644
--- a/src/KeyWords.cxx
+++ b/src/KeyWords.cxx
@@ -148,6 +148,7 @@ int Scintilla_LinkLexers() {
LINK_LEXER(lmBullant);
LINK_LEXER(lmConf);
LINK_LEXER(lmCPP);
+ LINK_LEXER(lmCPPNoCase);
LINK_LEXER(lmTCL);
LINK_LEXER(lmNncrontab);
LINK_LEXER(lmEiffel);
diff --git a/src/LexCPP.cxx b/src/LexCPP.cxx
index 39f458da7..411f33d10 100644
--- a/src/LexCPP.cxx
+++ b/src/LexCPP.cxx
@@ -52,7 +52,7 @@ static inline bool IsStateString(const int state) {
}
static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[],
- Accessor &styler) {
+ Accessor &styler, bool caseSensitive) {
WordList &keywords = *keywordlists[0];
WordList &keywords2 = *keywordlists[1];
@@ -71,7 +71,7 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
StyleContext sc(startPos, length, initStyle, styler);
for (; sc.More(); sc.Forward()) {
-
+
if (sc.atLineStart && (sc.state == SCE_C_STRING)) {
// Prevent SCE_C_STRINGEOL from leaking back to previous line
sc.SetState(SCE_C_STRING);
@@ -98,7 +98,11 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
} else if (sc.state == SCE_C_IDENTIFIER) {
if (!IsAWordChar(sc.ch) || (sc.ch == '.')) {
char s[100];
- sc.GetCurrent(s, sizeof(s));
+ if (caseSensitive) {
+ sc.GetCurrent(s, sizeof(s));
+ } else {
+ sc.GetCurrentLowered(s, sizeof(s));
+ }
if (keywords.InList(s)) {
lastWordWasUUID = strcmp(s, "uuid") == 0;
sc.ChangeState(SCE_C_WORD);
@@ -141,7 +145,11 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
sc.ForwardSetState(SCE_C_DEFAULT);
} else if (!IsADoxygenChar(sc.ch)) {
char s[100];
- sc.GetCurrent(s, sizeof(s));
+ if (caseSensitive) {
+ sc.GetCurrent(s, sizeof(s));
+ } else {
+ sc.GetCurrentLowered(s, sizeof(s));
+ }
if (!isspace(sc.ch) || !keywords3.InList(s+1)) {
sc.ChangeState(SCE_C_COMMENTDOCKEYWORDERROR);
}
@@ -245,9 +253,9 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
sc.SetState(SCE_C_OPERATOR);
}
}
-
+
if (sc.atLineEnd) {
- // Reset states to begining of colourise so no surprises
+ // Reset states to begining of colourise so no surprises
// if different sets of lines lexed.
chPrevNonWhite = ' ';
visibleChars = 0;
@@ -262,7 +270,7 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
}
static bool IsStreamCommentStyle(int style) {
- return style == SCE_C_COMMENT ||
+ return style == SCE_C_COMMENT ||
style == SCE_C_COMMENTDOC ||
style == SCE_C_COMMENTDOCKEYWORD ||
style == SCE_C_COMMENTDOCKEYWORDERROR;
@@ -354,5 +362,16 @@ static const char * const cppWordLists[] = {
0,
};
-LexerModule lmCPP(SCLEX_CPP, ColouriseCppDoc, "cpp", FoldCppDoc, cppWordLists);
-LexerModule lmTCL(SCLEX_TCL, ColouriseCppDoc, "tcl", FoldCppDoc, cppWordLists);
+static void ColouriseCppDocSensitive(unsigned int startPos, int length, int initStyle, WordList *keywordlists[],
+ Accessor &styler) {
+ ColouriseCppDoc(startPos, length, initStyle, keywordlists, styler, true);
+}
+
+static void ColouriseCppDocInsensitive(unsigned int startPos, int length, int initStyle, WordList *keywordlists[],
+ Accessor &styler) {
+ ColouriseCppDoc(startPos, length, initStyle, keywordlists, styler, false);
+}
+
+LexerModule lmCPP(SCLEX_CPP, ColouriseCppDocSensitive, "cpp", FoldCppDoc, cppWordLists);
+LexerModule lmCPPNoCase(SCLEX_CPPNOCASE, ColouriseCppDocInsensitive, "cppnocase", FoldCppDoc, cppWordLists);
+LexerModule lmTCL(SCLEX_TCL, ColouriseCppDocSensitive, "tcl", FoldCppDoc, cppWordLists);