diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/LexSQL.cxx | 18 | 
1 files changed, 15 insertions, 3 deletions
| diff --git a/src/LexSQL.cxx b/src/LexSQL.cxx index 144176855..8383eefb0 100644 --- a/src/LexSQL.cxx +++ b/src/LexSQL.cxx @@ -44,6 +44,7 @@ static void ColouriseSQLDoc(unsigned int startPos, int length,  	styler.StartAt(startPos);  	bool fold = styler.GetPropertyInt("fold") != 0; +	bool sqlBackslashEscapes = styler.GetPropertyInt("sql.backslash.escapes", 0) != 0;  	int lineCurrent = styler.GetLine(startPos);  	int spaceFlags = 0; @@ -88,6 +89,9 @@ static void ColouriseSQLDoc(unsigned int startPos, int length,  			} else if (ch == '-' && chNext == '-') {  				styler.ColourTo(i - 1, state);  				state = SCE_C_COMMENTLINE; +			} else if (ch == '#') { +				styler.ColourTo(i - 1, state); +				state = SCE_C_COMMENTLINEDOC;  			} else if (ch == '\'') {  				styler.ColourTo(i - 1, state);  				state = SCE_C_CHARACTER; @@ -106,6 +110,8 @@ static void ColouriseSQLDoc(unsigned int startPos, int length,  					state = SCE_C_COMMENT;  				} else if (ch == '-' && chNext == '-') {  					state = SCE_C_COMMENTLINE; +				} else if (ch == '#') { +					state = SCE_C_COMMENTLINEDOC;  				} else if (ch == '\'') {  					state = SCE_C_CHARACTER;  				} else if (ch == '"') { @@ -123,14 +129,18 @@ static void ColouriseSQLDoc(unsigned int startPos, int length,  						state = SCE_C_DEFAULT;  					}  				} -			} else if (state == SCE_C_COMMENTLINE) { +			} else if (state == SCE_C_COMMENTLINE || state == SCE_C_COMMENTLINEDOC) {  				if (ch == '\r' || ch == '\n') {  					styler.ColourTo(i - 1, state);  					state = SCE_C_DEFAULT;  				}  			} else if (state == SCE_C_CHARACTER) { -				if (ch == '\'') { -					if ( chNext == '\'' ) { +				if (sqlBackslashEscapes && ch == '\\') { +					i++; +					ch = chNext; +					chNext = styler.SafeGetCharAt(i + 1); +				} else if (ch == '\'') { +					if (chNext == '\'') {  						i++;  					} else {  						styler.ColourTo(i, state); @@ -158,6 +168,8 @@ static void ColouriseSQLDoc(unsigned int startPos, int length,  					state = SCE_C_COMMENT;  				} else if (ch == '-' && chNext == '-') {  					state = SCE_C_COMMENTLINE; +				} else if (ch == '#') { +					state = SCE_C_COMMENTLINEDOC;  				} else if (ch == '\'') {  					state = SCE_C_CHARACTER;  				} else if (ch == '"') { | 
