summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2019-11-24 18:31:42 +0100
committerGeorg Brandl <georg@python.org>2019-11-24 18:31:42 +0100
commitec982e5028aa14d9e6de09bcc4240db0a144a1b6 (patch)
tree9067a3b3a6923026213f2b64deeb2a5f3d7c51df
parent35c38334cab118bb2f79e5a5f41874d6e2f82bb2 (diff)
downloadpygments-git-ec982e5028aa14d9e6de09bcc4240db0a144a1b6.tar.gz
Java: make it less operator-heavy
Fixes #987
-rw-r--r--CHANGES2
-rw-r--r--pygments/lexers/jvm.py8
-rw-r--r--tests/test_java.py14
3 files changed, 14 insertions, 10 deletions
diff --git a/CHANGES b/CHANGES
index ad69bce9..237cd7c9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -39,6 +39,8 @@ Version 2.5.0
- Add LICENSE file to wheel builds
- Emacs Lisp: add more string functions
- Java: support ``var`` contextual keyword
+- Java: make structural punctuation (braces, parens, colon, comma)
+ ``Punctuation``, not ``Operator`` (#987)
- Ruby: support squiggly heredocs
- Dart: support ``@`` annotations
- GAS: accept registers in directive arguments
diff --git a/pygments/lexers/jvm.py b/pygments/lexers/jvm.py
index 604a6967..3d5cce48 100644
--- a/pygments/lexers/jvm.py
+++ b/pygments/lexers/jvm.py
@@ -50,7 +50,7 @@ class JavaLexer(RegexLexer):
(r'((?:(?:[^\W\d]|\$)[\w.\[\]$<>]*\s+)+?)' # return arguments
r'((?:[^\W\d]|\$)[\w$]*)' # method name
r'(\s*)(\()', # signature start
- bygroups(using(this), Name.Function, Text, Operator)),
+ bygroups(using(this), Name.Function, Text, Punctuation)),
(r'@[^\W\d][\w.]*', Name.Decorator),
(r'(abstract|const|enum|extends|final|implements|native|private|'
r'protected|public|static|strictfp|super|synchronized|throws|'
@@ -67,7 +67,8 @@ class JavaLexer(RegexLexer):
'import'),
(r'"(\\\\|\\"|[^"])*"', String),
(r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
- (r'(\.)((?:[^\W\d]|\$)[\w$]*)', bygroups(Operator, Name.Attribute)),
+ (r'(\.)((?:[^\W\d]|\$)[\w$]*)', bygroups(Punctuation,
+ Name.Attribute)),
(r'^\s*([^\W\d]|\$)[\w$]*:', Name.Label),
(r'([^\W\d]|\$)[\w$]*', Name),
(r'([0-9][0-9_]*\.([0-9][0-9_]*)?|'
@@ -82,7 +83,8 @@ class JavaLexer(RegexLexer):
(r'0[bB][01][01_]*[lL]?', Number.Bin),
(r'0[0-7_]+[lL]?', Number.Oct),
(r'0|[1-9][0-9_]*[lL]?', Number.Integer),
- (r'[~^*!%&\[\](){}<>|+=:;,./?-]', Operator),
+ (r'[~^*!%&\[\]<>|+=/?-]', Operator),
+ (r'[{}();:.,]', Punctuation),
(r'\n', Text)
],
'class': [
diff --git a/tests/test_java.py b/tests/test_java.py
index 40a1ec1b..94463246 100644
--- a/tests/test_java.py
+++ b/tests/test_java.py
@@ -9,7 +9,7 @@
import pytest
-from pygments.token import Text, Name, Operator, Keyword, Number
+from pygments.token import Text, Name, Punctuation, Keyword, Number
from pygments.lexers import JavaLexer
@@ -18,23 +18,23 @@ def lexer():
yield JavaLexer()
-def testEnhancedFor(lexer):
+def test_enhanced_for(lexer):
fragment = u'label:\nfor(String var2: var1) {}\n'
tokens = [
(Name.Label, u'label:'),
(Text, u'\n'),
(Keyword, u'for'),
- (Operator, u'('),
+ (Punctuation, u'('),
(Name, u'String'),
(Text, u' '),
(Name, u'var2'),
- (Operator, u':'),
+ (Punctuation, u':'),
(Text, u' '),
(Name, u'var1'),
- (Operator, u')'),
+ (Punctuation, u')'),
(Text, u' '),
- (Operator, u'{'),
- (Operator, u'}'),
+ (Punctuation, u'{'),
+ (Punctuation, u'}'),
(Text, u'\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens