Add keywords for python
authorJulien Enselme <jenselme@netbeans.org>
Fri, 05 Jun 2015 19:10:55 +0200
changeset 18278a8b7be7a3aa0
parent 18277 e61866d84a4f
child 18279 3c67f16ae9fe
Add keywords for python

- Keywords added: await, async, self, False, None, True
- Make sure self is highlighted as a keyword even when it is a method parameter
python.editor/src/org/netbeans/modules/python/editor/PythonSemanticHighlighter.java
python.editor/src/org/netbeans/modules/python/editor/lexer/PythonLexer.java
     1.1 --- a/python.editor/src/org/netbeans/modules/python/editor/PythonSemanticHighlighter.java	Fri Jun 05 21:20:53 2015 +0200
     1.2 +++ b/python.editor/src/org/netbeans/modules/python/editor/PythonSemanticHighlighter.java	Fri Jun 05 19:10:55 2015 +0200
     1.3 @@ -166,12 +166,12 @@
     1.4              if (scope != null) {
     1.5                  if (scope.isUnused(name)) {
     1.6                      OffsetRange r = PythonAstUtils.getNameRange(info, node);
     1.7 -                    if (scope.isParameter(name)) {
     1.8 +                    if (scope.isParameter(name) && !name.equals("self")) {
     1.9                          highlights.put(r, EnumSet.of(ColoringAttributes.UNUSED, ColoringAttributes.PARAMETER));
    1.10                      } else {
    1.11                          highlights.put(r, EnumSet.of(ColoringAttributes.UNUSED));
    1.12                      }
    1.13 -                } else if (scope.isParameter(name)) {
    1.14 +                } else if (scope.isParameter(name) && !name.equals("self")) {
    1.15                      OffsetRange r = PythonAstUtils.getNameRange(info, node);
    1.16                      highlights.put(r, ColoringAttributes.PARAMETER_SET);
    1.17                  }
     2.1 --- a/python.editor/src/org/netbeans/modules/python/editor/lexer/PythonLexer.java	Fri Jun 05 21:20:53 2015 +0200
     2.2 +++ b/python.editor/src/org/netbeans/modules/python/editor/lexer/PythonLexer.java	Fri Jun 05 19:10:55 2015 +0200
     2.3 @@ -697,21 +697,28 @@
     2.4          char c2 = s.charAt(1);
     2.5  
     2.6          switch (c1) {
     2.7 -        case 'a': // and, as, assert
     2.8 +        case 'a': // and, as, assert, async, await
     2.9              switch (c2) {
    2.10              case 'n': // and
    2.11                  if (TokenUtilities.textEquals(s, "and")) { // NOI18N
    2.12                      return PythonTokenId.ANY_KEYWORD;
    2.13                  }
    2.14                  break;
    2.15 -            case 's':  // as, assert
    2.16 +            case 's':  // as, assert, async
    2.17                  if (length == 2) { // as
    2.18                      return PythonTokenId.ANY_KEYWORD;
    2.19                  }
    2.20                  if (length == 6 && TokenUtilities.textEquals(s, "assert")) { // NOI18N
    2.21                      return PythonTokenId.ANY_KEYWORD;
    2.22                  }
    2.23 +                if (length == 5 && TokenUtilities.textEquals(s, "async")) { // NOI18N
    2.24 +                    return PythonTokenId.ANY_KEYWORD;
    2.25 +                }
    2.26                  break;
    2.27 +            case 'w': // await
    2.28 +                if (length == 5 && TokenUtilities.textEquals(s, "await")) { // NOI18N
    2.29 +                    return PythonTokenId.ANY_KEYWORD;
    2.30 +                }
    2.31              }
    2.32              break;
    2.33          case 'b': // break
    2.34 @@ -841,6 +848,10 @@
    2.35                  }
    2.36              }
    2.37              break;
    2.38 +        case 's': // self
    2.39 +            if (length == 4 && TokenUtilities.textEquals(s, "self")) { // NOI18N
    2.40 +                return PythonTokenId.ANY_KEYWORD;
    2.41 +            }
    2.42          case 't': // try
    2.43              if (length == 3 && TokenUtilities.textEquals(s, "try")) { // NOI18N
    2.44                  return PythonTokenId.TRY;
    2.45 @@ -862,6 +873,18 @@
    2.46                  return PythonTokenId.ANY_KEYWORD;
    2.47              }
    2.48              break;
    2.49 +        case 'F': // False
    2.50 +            if (length == 5 && TokenUtilities.textEquals(s, "False")) { // NOI18N
    2.51 +                return PythonTokenId.ANY_KEYWORD;
    2.52 +            }
    2.53 +        case 'N': // None
    2.54 +            if (length == 4 && TokenUtilities.textEquals(s, "None")) { // NOI18N
    2.55 +                return PythonTokenId.ANY_KEYWORD;
    2.56 +            }
    2.57 +        case 'T': // True
    2.58 +            if (length == 4 && TokenUtilities.textEquals(s, "True")) { // NOI18N
    2.59 +                return PythonTokenId.ANY_KEYWORD;
    2.60 +            }
    2.61          }
    2.62  
    2.63          return null;