From 55d6de48576825dc09d08f4746cc78a46dc6c28d Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 17 Aug 2016 13:44:53 +0300 Subject: [PATCH] [java] fixes keyword highlighting in doc-commented module-info files --- .../intellij/lexer/JavaHighlightingLexer.java | 19 ++++++++++--------- .../src/com/intellij/lexer/LayeredLexer.java | 6 +++--- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/lexer/JavaHighlightingLexer.java b/java/java-analysis-impl/src/com/intellij/lexer/JavaHighlightingLexer.java index b0ec1a971669..57f672ff1614 100644 --- a/java/java-analysis-impl/src/com/intellij/lexer/JavaHighlightingLexer.java +++ b/java/java-analysis-impl/src/com/intellij/lexer/JavaHighlightingLexer.java @@ -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; diff --git a/platform/core-api/src/com/intellij/lexer/LayeredLexer.java b/platform/core-api/src/com/intellij/lexer/LayeredLexer.java index 4b5606e146d7..105e63bef8d4 100644 --- a/platform/core-api/src/com/intellij/lexer/LayeredLexer.java +++ b/platform/core-api/src/com/intellij/lexer/LayeredLexer.java @@ -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; } -} +} \ No newline at end of file