Skip to content

Commit cfa86a8

Browse files
committed
Merge pull request #2293 from dlsniper/improve-highlighting2
Introduce support for builtin function highlighting (fixes #1841)
2 parents 71bf2d5 + c4bab84 commit cfa86a8

File tree

10 files changed

+43
-17
lines changed

10 files changed

+43
-17
lines changed

src/com/goide/highlighting/GoColorsAndFontsPage.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public class GoColorsAndFontsPage implements ColorSettingsPage {
5050
new AttributesDescriptor("Type specification", TYPE_SPECIFICATION),
5151
new AttributesDescriptor("Type reference", TYPE_REFERENCE),
5252
new AttributesDescriptor("Builtin type", BUILTIN_TYPE_REFERENCE),
53+
new AttributesDescriptor("Builtin function", BUILTIN_FUNCTION),
5354
new AttributesDescriptor("Exported function", EXPORTED_FUNCTION),
5455
new AttributesDescriptor("Local function", LOCAL_FUNCTION),
5556
new AttributesDescriptor("Package exported interface", PACKAGE_EXPORTED_INTERFACE),
@@ -74,6 +75,7 @@ public class GoColorsAndFontsPage implements ColorSettingsPage {
7475
ATTRIBUTES_KEY_MAP.put("tr", TYPE_REFERENCE);
7576
ATTRIBUTES_KEY_MAP.put("ts", TYPE_SPECIFICATION);
7677
ATTRIBUTES_KEY_MAP.put("bt", BUILTIN_TYPE_REFERENCE);
78+
ATTRIBUTES_KEY_MAP.put("bf", BUILTIN_FUNCTION);
7779
ATTRIBUTES_KEY_MAP.put("kw", KEYWORD);
7880
ATTRIBUTES_KEY_MAP.put("ef", EXPORTED_FUNCTION);
7981
ATTRIBUTES_KEY_MAP.put("lf", LOCAL_FUNCTION);
@@ -225,6 +227,7 @@ public String getDemoText() {
225227
" _ = <lf>variableFunc</lf>(1)\n" +
226228
" _ = <fp>demo1</fp>\n" +
227229
" _ = <lv>demo2</lv>\n" +
230+
" <bf>println</bf>(\"builtin function\")" +
228231
"\n" +
229232
"}\n" +
230233
"\n" +

src/com/goide/highlighting/GoHighlightingAnnotator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ private static TextAttributesKey getColor(GoVarDefinition o) {
9393
}
9494

9595
private static TextAttributesKey getColor(GoNamedSignatureOwner o) {
96+
if (GoPsiImplUtil.builtin(o)) return BUILTIN_FUNCTION;
9697
return o.isPublic() ? EXPORTED_FUNCTION : LOCAL_FUNCTION;
9798
}
9899

src/com/goide/highlighting/GoSyntaxHighlightingColors.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public class GoSyntaxHighlightingColors {
4141
public static final TextAttributesKey TYPE_SPECIFICATION = createTextAttributesKey("GO_TYPE_SPECIFICATION", DefaultLanguageHighlighterColors.CLASS_NAME);
4242
public static final TextAttributesKey TYPE_REFERENCE = createTextAttributesKey("GO_TYPE_REFERENCE", DefaultLanguageHighlighterColors.CLASS_REFERENCE);
4343
public static final TextAttributesKey BUILTIN_TYPE_REFERENCE = createTextAttributesKey("GO_BUILTIN_TYPE_REFERENCE", DefaultLanguageHighlighterColors.CLASS_REFERENCE);
44+
public static final TextAttributesKey BUILTIN_FUNCTION = createTextAttributesKey("GO_BUILTIN_FUNCTION", DefaultLanguageHighlighterColors.FUNCTION_DECLARATION);
4445
public static final TextAttributesKey EXPORTED_FUNCTION = createTextAttributesKey("GO_EXPORTED_FUNCTION", DefaultLanguageHighlighterColors.FUNCTION_DECLARATION);
4546
public static final TextAttributesKey LOCAL_FUNCTION = createTextAttributesKey("GO_LOCAL_FUNCTION", DefaultLanguageHighlighterColors.FUNCTION_DECLARATION);
4647
public static final TextAttributesKey PACKAGE_EXPORTED_INTERFACE = createTextAttributesKey("GO_PACKAGE_EXPORTED_INTERFACE", DefaultLanguageHighlighterColors.INTERFACE_NAME);
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package main
2+
3+
func <info descr="null"><info descr="GO_LOCAL_FUNCTION">main</info></info>() {
4+
<info descr="null"><info descr="GO_BUILTIN_FUNCTION">println</info></info>("demo")
5+
}

testData/colorHighlighting/funcAndMethod.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package main
22

33
type <info descr="null"><info descr="GO_PACKAGE_LOCAL_INTERFACE">inner</info></info> interface {
4-
<info descr="null"><info descr="GO_EXPORTED_FUNCTION">Inner</info></info>() string
4+
<info descr="null"><info descr="GO_EXPORTED_FUNCTION">Inner</info></info>() <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">string</info></info>
55
}
66

77
type (
@@ -13,7 +13,7 @@ type (
1313
)
1414

1515
func (<info descr="null"><info descr="GO_METHOD_RECEIVER">a</info></info> <info descr="null"><info descr="GO_TYPE_REFERENCE">dem</info></info>) <info descr="null"><info descr="GO_EXPORTED_FUNCTION">Demo</info></info>() <info descr="null"><info descr="GO_PACKAGE_LOCAL_INTERFACE">inner</info></info> {
16-
return error("demo")
16+
return <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">error</info></info>("demo")
1717
}
1818

1919
func <info descr="null"><info descr="GO_LOCAL_FUNCTION">main</info></info>() {

testData/colorHighlighting/label.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package main
22

3-
func <info descr="null"><info descr="GO_LOCAL_FUNCTION">test</info></info>() int {
3+
func <info descr="null"><info descr="GO_LOCAL_FUNCTION">test</info></info>() <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info> {
44
<info descr="null"><info descr="GO_LABEL">foo</info></info>:
55
for {
66
continue <info descr="null"><info descr="GO_LABEL">foo</info></info>
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package main
22

3-
var <info descr="null"><info descr="GO_PACKAGE_LOCAL_VARIABLE">a</info></info> int = <info descr="null"><info descr="GO_NUMBER">0112</info></info>
4-
var <info descr="null"><info descr="GO_PACKAGE_LOCAL_VARIABLE">b</info></info> int = <info descr="null"><info descr="GO_NUMBER">0x112</info></info>
5-
var <info descr="null"><info descr="GO_PACKAGE_LOCAL_VARIABLE">c</info></info> int = <info descr="null"><info descr="GO_NUMBER">0Xabf112</info></info>
3+
var <info descr="null"><info descr="GO_PACKAGE_LOCAL_VARIABLE">a</info></info> <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info> = <info descr="null"><info descr="GO_NUMBER">0112</info></info>
4+
var <info descr="null"><info descr="GO_PACKAGE_LOCAL_VARIABLE">b</info></info> <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info> = <info descr="null"><info descr="GO_NUMBER">0x112</info></info>
5+
var <info descr="null"><info descr="GO_PACKAGE_LOCAL_VARIABLE">c</info></info> <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info> = <info descr="null"><info descr="GO_NUMBER">0Xabf112</info></info>

testData/colorHighlighting/simple.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ package main
33
import `fmt`
44

55
func <info descr="null"><info descr="GO_LOCAL_FUNCTION">main</info></info>() {
6-
fmt.Println("Hello")
6+
fmt.<info descr="null"><info descr="GO_EXPORTED_FUNCTION">Println</info></info>("Hello")
77
}

testData/colorHighlighting/types.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,25 @@ package main
22

33
type (
44
<info descr="null"><info descr="GO_PACKAGE_EXPORTED_INTERFACE">PublicInterface</info></info> interface {
5-
<info descr="null"><info descr="GO_EXPORTED_FUNCTION">PublicFunc</info></info>() int
6-
<info descr="null"><info descr="GO_LOCAL_FUNCTION">privateFunc</info></info>() int
5+
<info descr="null"><info descr="GO_EXPORTED_FUNCTION">PublicFunc</info></info>() <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info>
6+
<info descr="null"><info descr="GO_LOCAL_FUNCTION">privateFunc</info></info>() <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info>
77
}
88

99
<info descr="null"><info descr="GO_PACKAGE_LOCAL_INTERFACE">private</info></info> interface {
10-
<info descr="null"><info descr="GO_EXPORTED_FUNCTION">PublicFunc</info></info>() int
11-
<info descr="null"><info descr="GO_LOCAL_FUNCTION">privateFunc</info></info>() int
10+
<info descr="null"><info descr="GO_EXPORTED_FUNCTION">PublicFunc</info></info>() <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info>
11+
<info descr="null"><info descr="GO_LOCAL_FUNCTION">privateFunc</info></info>() <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info>
1212
}
1313

1414
<info descr="null"><info descr="GO_PACKAGE_EXPORTED_STRUCT">PublicStruct</info></info> struct {
1515

16-
<info descr="null"><info descr="GO_STRUCT_EXPORTED_MEMBER">PublicField</info></info> int
17-
<info descr="null"><info descr="GO_STRUCT_LOCAL_MEMBER">privateField</info></info> int
16+
<info descr="null"><info descr="GO_STRUCT_EXPORTED_MEMBER">PublicField</info></info> <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info>
17+
<info descr="null"><info descr="GO_STRUCT_LOCAL_MEMBER">privateField</info></info> <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info>
1818
}
1919
2020
<info descr="null"><info descr="GO_PACKAGE_LOCAL_STRUCT">privateStruct</info></info> struct {
21-
<info descr="null"><info descr="GO_STRUCT_EXPORTED_MEMBER">PublicField</info></info> int
22-
<info descr="null"><info descr="GO_STRUCT_LOCAL_MEMBER">privateField</info></info> int
21+
<info descr="null"><info descr="GO_STRUCT_EXPORTED_MEMBER">PublicField</info></info> <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info>
22+
<info descr="null"><info descr="GO_STRUCT_LOCAL_MEMBER">privateField</info></info> <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info>
2323
}
2424
25-
<info descr="null"><info descr="GO_TYPE_SPECIFICATION">demoInt</info></info> int
25+
<info descr="null"><info descr="GO_TYPE_SPECIFICATION">demoInt</info></info> <info descr="null"><info descr="GO_BUILTIN_TYPE_REFERENCE">int</info></info>
2626
)

tests/com/goide/editor/GoHighlightingAnnotatorTest.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,19 @@
1717
package com.goide.editor;
1818

1919
import com.goide.GoCodeInsightFixtureTestCase;
20+
import com.intellij.testFramework.LightProjectDescriptor;
2021
import com.intellij.testFramework.TestDataPath;
2122
import org.jetbrains.annotations.NotNull;
2223

2324
@TestDataPath("$PROJECT_ROOT/testData/colorHighlighting")
2425
public class GoHighlightingAnnotatorTest extends GoCodeInsightFixtureTestCase {
25-
26+
27+
@Override
28+
protected void setUp() throws Exception {
29+
super.setUp();
30+
setUpProjectSdk();
31+
}
32+
2633
public void testSimple() {
2734
doTest();
2835
}
@@ -51,6 +58,10 @@ public void testStructFields() {
5158
doTest();
5259
}
5360

61+
public void testBuiltinFunctions() {
62+
doTest();
63+
}
64+
5465
@Override
5566
protected boolean isWriteActionRequired() {
5667
return false;
@@ -65,5 +76,10 @@ private void doTest() {
6576
protected String getBasePath() {
6677
return "colorHighlighting";
6778
}
79+
80+
@Override
81+
protected LightProjectDescriptor getProjectDescriptor() {
82+
return createMockProjectDescriptor();
83+
}
6884
}
6985

0 commit comments

Comments
 (0)