diff options
author | nyamatongwe <unknown> | 2005-07-22 01:53:53 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2005-07-22 01:53:53 +0000 |
commit | 46c220c8016d69dcde0fca04e3d541eb86ef8dea (patch) | |
tree | 6bd5502b6123b5909d6bff20898a3c0a6dcbcd99 | |
parent | 735c4734059beb30d1a4a872ba4a7f3fca83f16b (diff) | |
download | scintilla-mirror-46c220c8016d69dcde0fca04e3d541eb86ef8dea.tar.gz |
Addition from Elias Pschernig supports FreeBasic.
-rw-r--r-- | src/LexBasic.cxx | 47 |
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); + |