aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authornyamatongwe <unknown>2005-07-22 01:53:53 +0000
committernyamatongwe <unknown>2005-07-22 01:53:53 +0000
commit46c220c8016d69dcde0fca04e3d541eb86ef8dea (patch)
tree6bd5502b6123b5909d6bff20898a3c0a6dcbcd99 /src
parent735c4734059beb30d1a4a872ba4a7f3fca83f16b (diff)
downloadscintilla-mirror-46c220c8016d69dcde0fca04e3d541eb86ef8dea.tar.gz
Addition from Elias Pschernig supports FreeBasic.
Diffstat (limited to 'src')
-rw-r--r--src/LexBasic.cxx47
1 files changed, 43 insertions, 4 deletions
diff --git a/src/LexBasic.cxx b/src/LexBasic.cxx
index 713ded614..4a1843aa0 100644
--- a/src/LexBasic.cxx
+++ b/src/LexBasic.cxx
@@ -83,7 +83,7 @@ static int LowerCase(int c)
}
static void ColouriseBasicDoc(unsigned int startPos, int length, int initStyle,
- WordList *keywordlists[], Accessor &styler) {
+ WordList *keywordlists[], Accessor &styler, char comment_char) {
bool wasfirst = true, isfirst = true; // true if first token in a line
styler.StartAt(startPos);
@@ -159,7 +159,10 @@ static void ColouriseBasicDoc(unsigned int startPos, int length, int initStyle,
if (sc.state == SCE_B_DEFAULT || sc.state == SCE_B_ERROR) {
if (isfirst && sc.Match('.')) {
sc.SetState(SCE_B_LABEL);
- } else if (sc.Match(';')) {
+ } else if (isfirst && sc.Match('#')) {
+ wasfirst = isfirst;
+ sc.SetState(SCE_B_IDENTIFIER);
+ } else if (sc.Match(comment_char)) {
sc.SetState(SCE_B_COMMENT);
} else if (sc.Match('"')) {
sc.SetState(SCE_B_STRING);
@@ -220,6 +223,21 @@ static int CheckPureFoldPoint(char const *token, int &level) {
return 0;
}
+static int CheckFreeFoldPoint(char const *token, int &level) {
+ if (!strcmp(token, "function") ||
+ !strcmp(token, "sub") ||
+ !strcmp(token, "type")) {
+ level |= SC_FOLDLEVELHEADERFLAG;
+ return 1;
+ }
+ if (!strcmp(token, "end function") ||
+ !strcmp(token, "end sub") ||
+ !strcmp(token, "end type")) {
+ return -1;
+ }
+ return 0;
+}
+
static void FoldBasicDoc(unsigned int startPos, int length,
Accessor &styler, int (*CheckFoldPoint)(char const *, int &)) {
int line = styler.GetLine(startPos);
@@ -283,12 +301,17 @@ static void FoldBasicDoc(unsigned int startPos, int length,
static void ColouriseBlitzBasicDoc(unsigned int startPos, int length, int initStyle,
WordList *keywordlists[], Accessor &styler) {
- ColouriseBasicDoc(startPos, length, initStyle, keywordlists, styler);
+ ColouriseBasicDoc(startPos, length, initStyle, keywordlists, styler, ';');
}
static void ColourisePureBasicDoc(unsigned int startPos, int length, int initStyle,
WordList *keywordlists[], Accessor &styler) {
- ColouriseBasicDoc(startPos, length, initStyle, keywordlists, styler);
+ ColouriseBasicDoc(startPos, length, initStyle, keywordlists, styler, ';');
+}
+
+static void ColouriseFreeBasicDoc(unsigned int startPos, int length, int initStyle,
+ WordList *keywordlists[], Accessor &styler) {
+ ColouriseBasicDoc(startPos, length, initStyle, keywordlists, styler, '\'');
}
static void FoldBlitzBasicDoc(unsigned int startPos, int length, int,
@@ -301,6 +324,11 @@ static void FoldPureBasicDoc(unsigned int startPos, int length, int,
FoldBasicDoc(startPos, length, styler, CheckPureFoldPoint);
}
+static void FoldFreeBasicDoc(unsigned int startPos, int length, int,
+ WordList *[], Accessor &styler) {
+ FoldBasicDoc(startPos, length, styler, CheckFreeFoldPoint);
+}
+
static const char * const blitzbasicWordListDesc[] = {
"BlitzBasic Keywords",
"user1",
@@ -317,9 +345,20 @@ static const char * const purebasicWordListDesc[] = {
0
};
+static const char * const freebasicWordListDesc[] = {
+ "FreeBasic Keywords",
+ "FreeBasic PreProcessor Keywords",
+ "user defined 1",
+ "user defined 2",
+ 0
+};
+
LexerModule lmBlitzBasic(SCLEX_BLITZBASIC, ColouriseBlitzBasicDoc, "blitzbasic",
FoldBlitzBasicDoc, blitzbasicWordListDesc);
LexerModule lmPureBasic(SCLEX_PUREBASIC, ColourisePureBasicDoc, "purebasic",
FoldPureBasicDoc, purebasicWordListDesc);
+LexerModule lmFreeBasic(SCLEX_FREEBASIC, ColouriseFreeBasicDoc, "freebasic",
+ FoldFreeBasicDoc, freebasicWordListDesc);
+