diff options
| -rw-r--r-- | doc/ScintillaHistory.html | 12 | ||||
| -rw-r--r-- | lexers/LexNim.cxx | 20 | ||||
| -rw-r--r-- | test/examples/x.nim | 8 | ||||
| -rw-r--r-- | test/examples/x.nim.styled | 8 | 
4 files changed, 35 insertions, 13 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index a53aed0e9..3f38d74b5 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -553,6 +553,18 @@        </li>      </ul>      <h3> +       <a href="https://www.scintilla.org/scite415.zip">Release 4.1.5</a> +    </h3> +    <ul> +	<li> +	Released 7 March 2019. +	</li> + 	<li> +	Improve the styling of numbers in Nim. +	<a href="https://sourceforge.net/p/scintilla/feature-requests/1268/">Feature #1268</a>. +	</li> +    <ul> +    <h3>         <a href="https://www.scintilla.org/scite414.zip">Release 4.1.4</a>      </h3>      <ul> diff --git a/lexers/LexNim.cxx b/lexers/LexNim.cxx index 92e1560a9..45a85469c 100644 --- a/lexers/LexNim.cxx +++ b/lexers/LexNim.cxx @@ -369,8 +369,8 @@ void SCI_METHOD LexerNim::Lex(Sci_PositionU startPos, Sci_Position length,                          sc.Forward(2);                      }                  } else if (sc.ch == '.') { -                    if (sc.chNext == '.') { -                        // Pass +                    if (IsADigit(sc.chNext)) { +                        sc.Forward();                      } else if (numType <= NumType::Exponent) {                          sc.SetState(SCE_NIM_OPERATOR);                          break; @@ -391,7 +391,10 @@ void SCI_METHOD LexerNim::Lex(Sci_PositionU startPos, Sci_Position length,                          }                      }                  } else if (sc.ch == '_') { -                    break; +                    // Accept only one underscore between digits +                    if (IsADigit(sc.chNext)) { +                        sc.Forward(); +                    }                  } else if (numType == NumType::Decimal) {                      if (sc.chPrev != '\'' && (sc.ch == 'e' || sc.ch == 'E')) {                          numType = NumType::Exponent; @@ -592,7 +595,7 @@ void SCI_METHOD LexerNim::Lex(Sci_PositionU startPos, Sci_Position length,          if (sc.state == SCE_NIM_DEFAULT) {              // Number -            if (IsADigit(sc.ch) || (IsADigit(sc.chNext) && sc.ch == '.')) { +            if (IsADigit(sc.ch)) {                  sc.SetState(SCE_NIM_NUMBER);                  numType = NumType::Decimal; @@ -703,15 +706,6 @@ void SCI_METHOD LexerNim::Lex(Sci_PositionU startPos, Sci_Position length,              // Operators              else if (strchr("()[]{}:=;-\\/&%$!+<>|^?,.*~@", sc.ch)) {                  sc.SetState(SCE_NIM_OPERATOR); - -                // Ignore decimal coloring in input like: range[0..5] -                if (sc.Match('.', '.')) { -                    sc.Forward(); - -                    if (sc.chNext == '.') { -                        sc.Forward(); -                    } -                }              }          } diff --git a/test/examples/x.nim b/test/examples/x.nim index ac8a274f4..874940d47 100644 --- a/test/examples/x.nim +++ b/test/examples/x.nim @@ -18,3 +18,11 @@ let standardTripleLitRawStr = R"""A triple-double raw string\""""  # Style of 'customIdent' is determined by lexer.nim.raw.strings.highlight.ident. 16 if false, 6 or 10 if true  let customDoubleLitRawStr = customIdent"A string\"  let customTripleLitRawStr = customIdent"""A triple-double raw string\"""" + +# Feature #1268 +10_000 +10__000 +10_ +1....5 +1.ident +1._ident diff --git a/test/examples/x.nim.styled b/test/examples/x.nim.styled index 2753d005e..3a05c04b8 100644 --- a/test/examples/x.nim.styled +++ b/test/examples/x.nim.styled @@ -18,3 +18,11 @@  {3}# Style of 'customIdent' is determined by lexer.nim.raw.strings.highlight.ident. 16 if false, 6 or 10 if true  {8}let{0} {16}customDoubleLitRawStr{0} {15}={0} {16}customIdent{6}"A string\"{0}  {8}let{0} {16}customTripleLitRawStr{0} {15}={0} {16}customIdent{10}"""A triple-double raw string\""""{0} + +{3}# Feature #1268 +{5}10_000{0} +{5}10{16}__000{0} +{5}10{16}_{0} +{5}1{15}....{5}5{0} +{5}1{15}.{16}ident{0} +{5}1{15}.{16}_ident{0}  | 
