Color functions from the standard library
authorJulien Enselme <jenselme@netbeans.org>
Sat, 06 Jun 2015 19:25:54 +0200
changeset 182793c67f16ae9fe
parent 18278 a8b7be7a3aa0
child 18280 d135bdb7cc50
Color functions from the standard library

- Add bytes, enumerate, float, int, type, str, len, isinstance, object
- Use a different color than the other keywords
python.editor/src/org/netbeans/modules/python/editor/lexer/PythonLexer.java
python.editor/src/org/netbeans/modules/python/editor/lexer/PythonTokenId.java
python.editor/src/org/netbeans/modules/python/editor/resources/fontsColors.xml
     1.1 --- a/python.editor/src/org/netbeans/modules/python/editor/lexer/PythonLexer.java	Fri Jun 05 19:10:55 2015 +0200
     1.2 +++ b/python.editor/src/org/netbeans/modules/python/editor/lexer/PythonLexer.java	Sat Jun 06 19:25:54 2015 +0200
     1.3 @@ -93,7 +93,7 @@
     1.4   *     our custom Python lexer is going to have a lot of corner case bugs.
     1.5   *   </li>
     1.6   * </ul>
     1.7 - * 
     1.8 + *
     1.9   * @author Tor Norbye
    1.10   */
    1.11  public final class PythonLexer implements Lexer<PythonTokenId> {
    1.12 @@ -721,9 +721,11 @@
    1.13                  }
    1.14              }
    1.15              break;
    1.16 -        case 'b': // break
    1.17 +        case 'b': // break, bytes
    1.18              if (length == 5 && TokenUtilities.textEquals(s, "break")) { // NOI18N
    1.19                  return PythonTokenId.ANY_KEYWORD;
    1.20 +            } else if (length == 5 && TokenUtilities.textEquals(s, "bytes")) { // NOI18N
    1.21 +                return PythonTokenId.STD_SYMBOLS;
    1.22              }
    1.23              break;
    1.24          case 'c': // class, continue
    1.25 @@ -762,6 +764,10 @@
    1.26                      }
    1.27                  }
    1.28                  break;
    1.29 +            case 'n': // enumerate
    1.30 +                if (length == 9 && TokenUtilities.textEquals(s, "enumerate")) { // NOI18N
    1.31 +                    return PythonTokenId.STD_SYMBOLS;
    1.32 +                }
    1.33              case 'x': // except, exec
    1.34                  if (length == 4 && TokenUtilities.textEquals(s, "exec")) { // NOI18N
    1.35                      return PythonTokenId.ANY_KEYWORD;
    1.36 @@ -789,6 +795,10 @@
    1.37                      return PythonTokenId.FROM;
    1.38                  }
    1.39                  break;
    1.40 +            case 'l':
    1.41 +                if (length == 5 && TokenUtilities.textEquals(s, "float")) {
    1.42 +                    return PythonTokenId.STD_SYMBOLS;
    1.43 +                }
    1.44              }
    1.45              break;
    1.46          case 'g': // global
    1.47 @@ -796,24 +806,32 @@
    1.48                  return PythonTokenId.ANY_KEYWORD;
    1.49              }
    1.50              break;
    1.51 -        case 'i': // if,import,in,is
    1.52 +        case 'i': // if,import,in,is, int
    1.53              if (length == 2) {
    1.54                  switch (c2) {
    1.55                  case 'f': // if
    1.56                      return PythonTokenId.IF;
    1.57                  case 'n': // in
    1.58 -                    return PythonTokenId.ANY_KEYWORD;
    1.59 +                    if (length == 2 && TokenUtilities.textEquals(s, "in")) { //NOI18N
    1.60 +                        return PythonTokenId.ANY_KEYWORD;
    1.61 +                    }
    1.62                  case 's': // is
    1.63                      return PythonTokenId.ANY_KEYWORD;
    1.64                  }
    1.65              } else if (c2 == 'm' && length == 6 && TokenUtilities.textEquals(s, "import")) { // NOI18N
    1.66                  // import
    1.67                  return PythonTokenId.IMPORT;
    1.68 +            } else if (length == 3 && TokenUtilities.textEquals(s, "int")) { // NOI18N
    1.69 +                return PythonTokenId.STD_SYMBOLS;
    1.70 +            } else if (length == 10 && TokenUtilities.textEquals(s, "isinstance")) { // NOI18N
    1.71 +                return PythonTokenId.STD_SYMBOLS;
    1.72              }
    1.73              break;
    1.74 -        case 'l': // lambda
    1.75 +        case 'l': // lambda, len
    1.76              if (length == 6 && TokenUtilities.textEquals(s, "lambda")) { // NOI18N
    1.77                  return PythonTokenId.ANY_KEYWORD;
    1.78 +            } else if (length == 3 && TokenUtilities.textEquals(s, "len")) { // NOI18N
    1.79 +                return PythonTokenId.STD_SYMBOLS;
    1.80              }
    1.81              break;
    1.82          case 'n': // not
    1.83 @@ -821,9 +839,11 @@
    1.84                  return PythonTokenId.ANY_KEYWORD;
    1.85              }
    1.86              break;
    1.87 -        case 'o': // or
    1.88 +        case 'o': // or, object
    1.89              if (length == 2 && TokenUtilities.textEquals(s, "or")) { // NOI18N
    1.90                  return PythonTokenId.ANY_KEYWORD;
    1.91 +            } else if (length == 6 && TokenUtilities.textEquals(s, "object")) { // NOI18N
    1.92 +                return PythonTokenId.STD_SYMBOLS;
    1.93              }
    1.94              break;
    1.95          case 'p': // pass,print
    1.96 @@ -842,19 +862,23 @@
    1.97                  if (length == 5 && TokenUtilities.textEquals(s, "raise")) { // NOI18N
    1.98                      return PythonTokenId.RAISE;
    1.99                  }
   1.100 -            } else if (c2 == 'e') { // print
   1.101 +            } else if (c2 == 'e') { // return
   1.102                  if (length == 6 && TokenUtilities.textEquals(s, "return")) { // NOI18N
   1.103                      return PythonTokenId.RETURN;
   1.104                  }
   1.105              }
   1.106              break;
   1.107 -        case 's': // self
   1.108 +        case 's': // self, str
   1.109              if (length == 4 && TokenUtilities.textEquals(s, "self")) { // NOI18N
   1.110                  return PythonTokenId.ANY_KEYWORD;
   1.111 +            } else if (length == 3 && TokenUtilities.textEquals(s, "str")) { // NOI18N
   1.112 +                return PythonTokenId.STD_SYMBOLS;
   1.113              }
   1.114 -        case 't': // try
   1.115 +        case 't': // try, type
   1.116              if (length == 3 && TokenUtilities.textEquals(s, "try")) { // NOI18N
   1.117                  return PythonTokenId.TRY;
   1.118 +            } else if (length == 4 && TokenUtilities.textEquals(s, "type")) { // NOI18N
   1.119 +                return PythonTokenId.STD_SYMBOLS;
   1.120              }
   1.121              break;
   1.122          case 'w': // while,with
   1.123 @@ -862,7 +886,7 @@
   1.124                  if (length == 5 && TokenUtilities.textEquals(s, "while")) { // NOI18N
   1.125                      return PythonTokenId.ANY_KEYWORD;
   1.126                  }
   1.127 -            } else if (c2 == 'i') { // print
   1.128 +            } else if (c2 == 'i') { // with
   1.129                  if (length == 4 && TokenUtilities.textEquals(s, "with")) { // NOI18N
   1.130                      return PythonTokenId.ANY_KEYWORD;
   1.131                  }
     2.1 --- a/python.editor/src/org/netbeans/modules/python/editor/lexer/PythonTokenId.java	Fri Jun 05 19:10:55 2015 +0200
     2.2 +++ b/python.editor/src/org/netbeans/modules/python/editor/lexer/PythonTokenId.java	Sat Jun 06 19:25:54 2015 +0200
     2.3 @@ -81,6 +81,7 @@
     2.4      DECORATOR(null, OPERATOR_CAT), // NOI18N
     2.5      //    CONTINUED_LINE(null, WHITESPACE_CAT), // NOI18N
     2.6      COMMENT(null, COMMENT_CAT),
     2.7 +    STD_SYMBOLS(null, KEYWORD_CAT), // NOI18N
     2.8      LPAREN("(", SEPARATOR_CAT), // NOI18N
     2.9      RPAREN(")", SEPARATOR_CAT), // NOI18N
    2.10      LBRACE("{", SEPARATOR_CAT), // NOI18N
     3.1 --- a/python.editor/src/org/netbeans/modules/python/editor/resources/fontsColors.xml	Fri Jun 05 19:10:55 2015 +0200
     3.2 +++ b/python.editor/src/org/netbeans/modules/python/editor/resources/fontsColors.xml	Sat Jun 06 19:25:54 2015 +0200
     3.3 @@ -35,6 +35,7 @@
     3.4          <font style="bold"/>
     3.5      </fontcolor>
     3.6      <fontcolor name="QUOTED_STRING_LITERAL" default="string"/>
     3.7 +    <fontcolor name="STD_SYMBOLS" foreColor="3366CC" />
     3.8  
     3.9      <!--"semantic" highlighting:-->
    3.10      <fontcolor name="mod-unused" waveUnderlined="999999"/>