diff options
Diffstat (limited to 'src/LexVB.cxx')
| -rw-r--r-- | src/LexVB.cxx | 27 | 
1 files changed, 15 insertions, 12 deletions
| diff --git a/src/LexVB.cxx b/src/LexVB.cxx index feb9fe24a..67dfa7842 100644 --- a/src/LexVB.cxx +++ b/src/LexVB.cxx @@ -50,6 +50,7 @@ static void ColouriseVBDoc(unsigned int startPos, int length, int initStyle,  	styler.StartAt(startPos); +	int visibleChars = 0;  	int state = initStyle;  	char chNext = styler[startPos];  	styler.StartSegment(startPos); @@ -64,6 +65,17 @@ static void ColouriseVBDoc(unsigned int startPos, int length, int initStyle,  			continue;  		} +		if (ch == '\r' || ch == '\n') { +			// End of line +			if (state == SCE_C_COMMENTLINE || state == SCE_C_PREPROCESSOR) { +				styler.ColourTo(i - 1, state); +				state = SCE_C_DEFAULT; +			} +			visibleChars = 0; +		} +		if (!isspace(ch)) +			visibleChars++; +  		if (state == SCE_C_DEFAULT) {  			if (iswordstart(ch)) {  				styler.ColourTo(i - 1, state); @@ -74,7 +86,8 @@ static void ColouriseVBDoc(unsigned int startPos, int length, int initStyle,  			} else if (ch == '\"') {  				styler.ColourTo(i - 1, state);  				state = SCE_C_STRING; -			} else if (ch == '#') { +			} else if (ch == '#' && visibleChars == 1) { +				// Preprocessor commands are alone on their line  				styler.ColourTo(i - 1, state);  				state = SCE_C_PREPROCESSOR;  			} else if (ch == '&' && tolower(chNext) == 'h') { @@ -99,12 +112,7 @@ static void ColouriseVBDoc(unsigned int startPos, int length, int initStyle,  				}  			}  		} else { -			if (state == SCE_C_COMMENTLINE) { -				if (ch == '\r' || ch == '\n') { -					styler.ColourTo(i - 1, state); -					state = SCE_C_DEFAULT; -				} -			} else if (state == SCE_C_STRING) { +			if (state == SCE_C_STRING) {  				// VB doubles quotes to preserve them  				if (ch == '\"') {  					styler.ColourTo(i, state); @@ -113,11 +121,6 @@ static void ColouriseVBDoc(unsigned int startPos, int length, int initStyle,  					ch = chNext;  					chNext = styler.SafeGetCharAt(i + 1);  				} -			} else if (state == SCE_C_PREPROCESSOR) { -				if (ch == '\r' || ch == '\n') { -					styler.ColourTo(i - 1, state); -					state = SCE_C_DEFAULT; -				}  			}  			if (state == SCE_C_DEFAULT) {    // One of the above succeeded  				if (ch == '\'') { | 
