mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-64287 Groovy property access colored like field access
This commit is contained in:
@@ -88,6 +88,7 @@ import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUt
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightParameter;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.types.GrClosureSignatureUtil;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.GroovyPropertyUtils;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil;
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.noncode.GrInheritConstructorContributor;
|
||||
@@ -1439,12 +1440,22 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator {
|
||||
final PsiElement refNameElement = getElementToHighlight(refExpr);
|
||||
Annotation annotation = holder.createInfoAnnotation(refNameElement, null);
|
||||
|
||||
if (member instanceof PsiField || member instanceof GrAccessorMethod) {
|
||||
if (member instanceof PsiField) {
|
||||
annotation.setTextAttributes(isStatic ? DefaultHighlighter.STATIC_FIELD : DefaultHighlighter.INSTANCE_FIELD);
|
||||
return;
|
||||
}
|
||||
else if (member instanceof GrAccessorMethod) {
|
||||
annotation.setTextAttributes(isStatic ? DefaultHighlighter.STATIC_PROPERTY_REFERENCE : DefaultHighlighter.INSTANCE_PROPERTY_REFERENCE);
|
||||
return;
|
||||
}
|
||||
if (member instanceof PsiMethod) {
|
||||
annotation.setTextAttributes(!isStatic ? DefaultHighlighter.METHOD_CALL : DefaultHighlighter.STATIC_METHOD_ACCESS);
|
||||
if (GroovyPropertyUtils.isSimplePropertyAccessor((PsiMethod)member)) {
|
||||
annotation
|
||||
.setTextAttributes(isStatic ? DefaultHighlighter.STATIC_PROPERTY_REFERENCE : DefaultHighlighter.INSTANCE_PROPERTY_REFERENCE);
|
||||
}
|
||||
else {
|
||||
annotation.setTextAttributes(isStatic ? DefaultHighlighter.STATIC_METHOD_ACCESS : DefaultHighlighter.METHOD_CALL);
|
||||
}
|
||||
}
|
||||
if (member instanceof PsiClass) {
|
||||
highligtClassReference(holder, refExpr);
|
||||
|
||||
+16
-1
@@ -76,7 +76,10 @@ public class DefaultHighlighter {
|
||||
static final String STATIC_METHOD_ACCESS_ID = "Static method access";
|
||||
@NonNls
|
||||
static final String CLASS_REFERENCE_ID = "Class";
|
||||
|
||||
@NonNls
|
||||
static final String INSTANCE_PROPERTY_REFERENCE_ID = "Instance property reference ID";
|
||||
@NonNls
|
||||
static final String STATIC_PROPERTY_REFERENCE_ID = "Static property reference ID";
|
||||
@NonNls
|
||||
static final String MAP_KEY_ID = "Map key";
|
||||
|
||||
@@ -115,6 +118,18 @@ public class DefaultHighlighter {
|
||||
public static TextAttributesKey CLASS_REFERENCE =
|
||||
TextAttributesKey.createTextAttributesKey(CLASS_REFERENCE_ID, HighlighterColors.TEXT.getDefaultAttributes().clone());
|
||||
|
||||
public static final TextAttributes INSTANCE_PROPERTY_REFERENCE_ATTRIBUTES = INSTANCE_FIELD.getDefaultAttributes().clone();
|
||||
public static final TextAttributes STATIC_PROPERTY_REFERENCE_ATTRIBUTES = STATIC_FIELD.getDefaultAttributes().clone();
|
||||
static {
|
||||
INSTANCE_PROPERTY_REFERENCE_ATTRIBUTES.setFontType(Font.PLAIN);
|
||||
STATIC_PROPERTY_REFERENCE_ATTRIBUTES.setFontType(Font.ITALIC);
|
||||
}
|
||||
public static TextAttributesKey INSTANCE_PROPERTY_REFERENCE =
|
||||
TextAttributesKey.createTextAttributesKey(INSTANCE_PROPERTY_REFERENCE_ID, INSTANCE_PROPERTY_REFERENCE_ATTRIBUTES);
|
||||
|
||||
public static TextAttributesKey STATIC_PROPERTY_REFERENCE =
|
||||
TextAttributesKey.createTextAttributesKey(STATIC_PROPERTY_REFERENCE_ID, STATIC_PROPERTY_REFERENCE_ATTRIBUTES);
|
||||
|
||||
public static final TextAttributes KEYWORD_ATTRIBUTES = SyntaxHighlighterColors.KEYWORD.getDefaultAttributes().clone();
|
||||
static{
|
||||
|
||||
|
||||
+6
-1
@@ -72,6 +72,8 @@ public class GroovyColorsAndFontsPage implements ColorSettingsPage {
|
||||
new AttributesDescriptor(DefaultHighlighter.INSTANCE_FIELD_ID, DefaultHighlighter.INSTANCE_FIELD),
|
||||
new AttributesDescriptor(DefaultHighlighter.CLASS_REFERENCE_ID, DefaultHighlighter.CLASS_REFERENCE),
|
||||
new AttributesDescriptor(DefaultHighlighter.MAP_KEY_ID, DefaultHighlighter.MAP_KEY),
|
||||
new AttributesDescriptor(DefaultHighlighter.INSTANCE_PROPERTY_REFERENCE_ID, DefaultHighlighter.INSTANCE_PROPERTY_REFERENCE),
|
||||
new AttributesDescriptor(DefaultHighlighter.STATIC_PROPERTY_REFERENCE_ID, DefaultHighlighter.STATIC_PROPERTY_REFERENCE),
|
||||
};
|
||||
|
||||
@NotNull
|
||||
@@ -111,7 +113,8 @@ public class GroovyColorsAndFontsPage implements ColorSettingsPage {
|
||||
"'JetBrains'.matches(/Jw+Bw+/) \n" +
|
||||
"def x=1 + <unresolved>unresolved</unresolved>\n" +
|
||||
"def f1 = []\n" +
|
||||
"<classref>File</classref> f=<literal>[</literal>'path'<literal>]</literal>"
|
||||
"<classref>File</classref> f=<literal>[</literal>'path'<literal>]</literal>\n" +
|
||||
"print new <classref>Demo</classref>().<prop>property</prop>"
|
||||
;
|
||||
}
|
||||
|
||||
@@ -128,6 +131,8 @@ public class GroovyColorsAndFontsPage implements ColorSettingsPage {
|
||||
map.put("classref", DefaultHighlighter.CLASS_REFERENCE);
|
||||
map.put("literal", DefaultHighlighter.LITERAL_CONVERSION);
|
||||
map.put("mapkey", DefaultHighlighter.MAP_KEY);
|
||||
map.put("prop", DefaultHighlighter.INSTANCE_PROPERTY_REFERENCE);
|
||||
map.put("staticprop", DefaultHighlighter.STATIC_PROPERTY_REFERENCE);
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user