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"/>