diff --git a/PowerEditor/installer/nativeLang/french.xml b/PowerEditor/installer/nativeLang/french.xml index 1819144f..cde4b075 100644 --- a/PowerEditor/installer/nativeLang/french.xml +++ b/PowerEditor/installer/nativeLang/french.xml @@ -155,10 +155,10 @@ - - - - + + + + @@ -189,17 +189,17 @@ - - - + + + - + - - + + @@ -241,7 +241,7 @@ - + @@ -417,7 +417,7 @@ - + diff --git a/scintilla/src/LexUser.cxx b/scintilla/src/LexUser.cxx index a167341c..4570dbe0 100644 --- a/scintilla/src/LexUser.cxx +++ b/scintilla/src/LexUser.cxx @@ -243,6 +243,9 @@ static void ColouriseUserDoc(unsigned int startPos, int length, int initStyle, W bool escaped = false; char escapeChar = static_cast(styler.GetPropertyInt("userDefine.escapeChar", 0)); + bool hasDot = false; + bool hasExp = false; + for (int i = 0 ; i < 3 ; i++) { delimOpen[i] = keywords.words[0][i] == '0'?'\0':keywords.words[0][i]; @@ -258,9 +261,36 @@ static void ColouriseUserDoc(unsigned int startPos, int length, int initStyle, W { case SCE_USER_NUMBER : { + if (sc.ch == '.') + { + if (!hasDot) + { + hasDot = true; + break; + } + } //if (!isAWordChar(sc.ch)) + if (sc.ch == 'e' || sc.ch == 'E') + { + if (!hasExp && sc.More()) + { + hasExp = true; + sc.Forward(); + if (IsADigit(sc.ch)) break; + if (sc.More()) + if (sc.ch == '+' || sc.ch == '-') + { + sc.Forward(); + if (IsADigit(sc.ch)) break; + } + } + } if (!IsADigit(sc.ch)) + { sc.SetState(SCE_USER_DEFAULT); + hasDot = false; + hasExp = false; + } break; } @@ -431,6 +461,13 @@ static void ColouriseUserDoc(unsigned int startPos, int length, int initStyle, W } else if (isInOpList(symbols, sc.ch)) sc.SetState(SCE_USER_OPERATOR); + else if (sc.ch == '-' && IsADigit(sc.chNext)) + sc.SetState(SCE_USER_NUMBER); + else if (sc.ch == '.' && IsADigit(sc.chNext)) + { + hasDot = true; + sc.SetState(SCE_USER_NUMBER); + } else if (isAWordStart(sc.ch)) sc.SetState(SCE_USER_IDENTIFIER); }