diff options
author | XhmikosR <xhmikosr@gmail.com> | 2014-09-30 11:50:24 +0300 |
---|---|---|
committer | XhmikosR <xhmikosr@gmail.com> | 2014-09-30 11:52:03 +0300 |
commit | e3126ffde6c6ee2926aba4705f5ee090ca7120d1 (patch) | |
tree | 2902cec91a579ee3ddf82a2c57aae934882515dd /scintilla/lexers/LexSQL.cxx | |
parent | 45af17c0808a3234a60182bbbdb7eabaf852bb22 (diff) | |
download | notepad2-mod-e3126ffde6c6ee2926aba4705f5ee090ca7120d1.zip notepad2-mod-e3126ffde6c6ee2926aba4705f5ee090ca7120d1.tar.gz notepad2-mod-e3126ffde6c6ee2926aba4705f5ee090ca7120d1.tar.bz2 |
Update Scintilla to v3.5.1.
Diffstat (limited to 'scintilla/lexers/LexSQL.cxx')
-rw-r--r-- | scintilla/lexers/LexSQL.cxx | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/scintilla/lexers/LexSQL.cxx b/scintilla/lexers/LexSQL.cxx index 8b631d7..3c3ded0 100644 --- a/scintilla/lexers/LexSQL.cxx +++ b/scintilla/lexers/LexSQL.cxx @@ -444,6 +444,8 @@ void SCI_METHOD LexerSQL::Lex(unsigned int startPos, int length, int initStyle, StyleContext sc(startPos, length, initStyle, styler);
int styleBeforeDCKeyword = SCE_SQL_DEFAULT;
int offset = 0;
+ char qOperator = 0x00;
+
for (; sc.More(); sc.Forward(), offset++) {
// Determine if the current state should terminate.
switch (sc.state) {
@@ -556,11 +558,39 @@ void SCI_METHOD LexerSQL::Lex(unsigned int startPos, int length, int initStyle, }
}
break;
+ case SCE_SQL_QOPERATOR:
+ if (qOperator == 0x00) {
+ qOperator = sc.ch;
+ } else {
+ char qComplement = 0x00;
+
+ if (qOperator == '<') {
+ qComplement = '>';
+ } else if (qOperator == '(') {
+ qComplement = ')';
+ } else if (qOperator == '{') {
+ qComplement = '}';
+ } else if (qOperator == '[') {
+ qComplement = ']';
+ } else {
+ qComplement = qOperator;
+ }
+
+ if (sc.Match(qComplement, '\'')) {
+ sc.Forward();
+ sc.ForwardSetState(SCE_SQL_DEFAULT);
+ qOperator = 0x00;
+ }
+ }
+ break;
}
// Determine if a new state should be entered.
if (sc.state == SCE_SQL_DEFAULT) {
- if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
+ if (sc.Match('q', '\'') || sc.Match('Q', '\'')) {
+ sc.SetState(SCE_SQL_QOPERATOR);
+ sc.Forward();
+ } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
sc.SetState(SCE_SQL_NUMBER);
} else if (IsAWordStart(sc.ch)) {
sc.SetState(SCE_SQL_IDENTIFIER);
|