[java] fixes keyword highlighting in doc-commented module-info files

This commit is contained in:
Roman Shevchenko
2016-08-17 13:46:14 +03:00
parent fec064c3ae
commit 55d6de4857
2 changed files with 13 additions and 12 deletions
@@ -52,20 +52,21 @@ public class JavaHighlightingLexer extends LayeredLexer {
public IElementType getTokenType() {
IElementType t = super.getTokenType();
if (myAtStart && !ElementType.JAVA_COMMENT_OR_WHITESPACE_BIT_SET.contains(t)) {
if (myAtStart && !isLayerActive() && !ElementType.JAVA_COMMENT_OR_WHITESPACE_BIT_SET.contains(t)) {
myAtStart = false;
myModuleInfo = t == JavaTokenType.IDENTIFIER && PsiKeyword.MODULE.equals(getTokenText());
}
if (myModuleInfo && t == JavaTokenType.IDENTIFIER) {
String text = getTokenText();
if (PsiKeyword.MODULE.equals(text)) t = JavaTokenType.MODULE_KEYWORD;
else if (PsiKeyword.REQUIRES.equals(text)) t = JavaTokenType.REQUIRES_KEYWORD;
else if (PsiKeyword.EXPORTS.equals(text)) t = JavaTokenType.EXPORTS_KEYWORD;
else if (PsiKeyword.USES.equals(text)) t = JavaTokenType.USES_KEYWORD;
else if (PsiKeyword.PROVIDES.equals(text)) t = JavaTokenType.PROVIDES_KEYWORD;
else if (PsiKeyword.TO.equals(text)) t = JavaTokenType.TO_KEYWORD;
else if (PsiKeyword.WITH.equals(text)) t = JavaTokenType.WITH_KEYWORD;
switch (getTokenText()) {
case PsiKeyword.MODULE: t = JavaTokenType.MODULE_KEYWORD; break;
case PsiKeyword.REQUIRES: t = JavaTokenType.REQUIRES_KEYWORD; break;
case PsiKeyword.EXPORTS: t = JavaTokenType.EXPORTS_KEYWORD; break;
case PsiKeyword.USES: t = JavaTokenType.USES_KEYWORD; break;
case PsiKeyword.PROVIDES: t = JavaTokenType.PROVIDES_KEYWORD; break;
case PsiKeyword.TO: t = JavaTokenType.TO_KEYWORD; break;
case PsiKeyword.WITH: t = JavaTokenType.WITH_KEYWORD; break;
}
}
return t;
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -183,11 +183,11 @@ public class LayeredLexer extends DelegateLexer {
return false;
}
private boolean isLayerActive() {
protected boolean isLayerActive() {
return myCurrentLayerLexer != null;
}
private boolean isInLayerEndGap() {
return myLayerLeftPart != -1;
}
}
}