diff options
| -rw-r--r-- | doc/ScintillaHistory.html | 1 | ||||
| -rw-r--r-- | include/SciLexer.h | 1 | ||||
| -rw-r--r-- | include/Scintilla.iface | 1 | ||||
| -rw-r--r-- | lexers/LexCPP.cxx | 17 | 
4 files changed, 20 insertions, 0 deletions
| diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index 93c3ee026..4a7643079 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -384,6 +384,7 @@  	<td>Occam's Razor</td>  	<td>Ben Bluemel</td>  	<td>David Wolfendale</td> +	<td>Chris Angelico</td>      </tr>      </table>      <p> diff --git a/include/SciLexer.h b/include/SciLexer.h index e8805f2d6..255e091b7 100644 --- a/include/SciLexer.h +++ b/include/SciLexer.h @@ -153,6 +153,7 @@  #define SCE_C_GLOBALCLASS 19  #define SCE_C_STRINGRAW 20  #define SCE_C_TRIPLEVERBATIM 21 +#define SCE_C_HASHQUOTEDSTRING 22  #define SCE_D_DEFAULT 0  #define SCE_D_COMMENT 1  #define SCE_D_COMMENTLINE 2 diff --git a/include/Scintilla.iface b/include/Scintilla.iface index 9530f4292..51ada6026 100644 --- a/include/Scintilla.iface +++ b/include/Scintilla.iface @@ -2469,6 +2469,7 @@ val SCE_C_COMMENTDOCKEYWORDERROR=18  val SCE_C_GLOBALCLASS=19  val SCE_C_STRINGRAW=20  val SCE_C_TRIPLEVERBATIM=21 +val SCE_C_HASHQUOTEDSTRING=22  # Lexical states for SCLEX_D  lex D=SCLEX_D SCE_D_  val SCE_D_DEFAULT=0 diff --git a/lexers/LexCPP.cxx b/lexers/LexCPP.cxx index 51fd19255..5cc2f4556 100644 --- a/lexers/LexCPP.cxx +++ b/lexers/LexCPP.cxx @@ -209,6 +209,7 @@ struct OptionsCPP {  	bool trackPreprocessor;  	bool updatePreprocessor;  	bool triplequotedStrings; +	bool hashquotedStrings;  	bool fold;  	bool foldSyntaxBased;  	bool foldComment; @@ -226,6 +227,7 @@ struct OptionsCPP {  		trackPreprocessor = true;  		updatePreprocessor = true;  		triplequotedStrings = false; +		hashquotedStrings = false;  		fold = false;  		foldSyntaxBased = true;  		foldComment = false; @@ -268,6 +270,9 @@ struct OptionSetCPP : public OptionSet<OptionsCPP> {  		DefineProperty("lexer.cpp.triplequoted.strings", &OptionsCPP::triplequotedStrings,  			"Set to 1 to enable highlighting of triple-quoted strings."); +		DefineProperty("lexer.cpp.hashquoted.strings", &OptionsCPP::hashquotedStrings, +			"Set to 1 to enable highlighting of hash-quoted strings."); +  		DefineProperty("fold", &OptionsCPP::fold);  		DefineProperty("fold.cpp.syntax.based", &OptionsCPP::foldSyntaxBased, @@ -692,6 +697,15 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,  					sc.ForwardSetState(SCE_C_DEFAULT|activitySet);  				}  				break; +			case SCE_C_HASHQUOTEDSTRING: +				if (sc.ch == '\\') { +					if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') { +						sc.Forward(); +					} +				} else if (sc.ch == '\"') { +					sc.ForwardSetState(SCE_C_DEFAULT|activitySet); +				} +				break;  			case SCE_C_STRINGRAW:  				if (sc.Match(rawStringTerminator.c_str())) {  					for (size_t termPos=rawStringTerminator.size(); termPos; termPos--) @@ -768,6 +782,9 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,  			} else if (options.triplequotedStrings && sc.Match("\"\"\"")) {  				sc.SetState(SCE_C_TRIPLEVERBATIM|activitySet);  				sc.Forward(2); +			} else if (options.hashquotedStrings && sc.Match('#', '\"')) { +				sc.SetState(SCE_C_HASHQUOTEDSTRING|activitySet); +				sc.Forward();  			} else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {  				if (lastWordWasUUID) {  					sc.SetState(SCE_C_UUID|activitySet); | 
