Skip to content

Commit ee87ba3

Browse files
committed
Add predefined
1 parent f978ac3 commit ee87ba3

File tree

2 files changed

+78
-6
lines changed

2 files changed

+78
-6
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Solidity for DevKt
22

3+
[![Build Status](https://travis-ci.org/devkt-plugins/solidity-devkt.svg?branch=master)](https://travis-ci.org/devkt-plugins/solidity-devkt)
4+
35
This is a [DevKt][0] plugin for the Solidity programming language, based on
46
[this IDEA plugin][1].
57

src/me/serce/devkt/solidity/lang/Solidity.java

Lines changed: 76 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package me.serce.devkt.solidity.lang;
22

33
import kotlin.Pair;
4+
import kotlin.collections.CollectionsKt;
45
import me.serce.devkt.solidity.lang.core.SolElementType;
56
import me.serce.devkt.solidity.lang.core.SolidityParserDefinition;
67
import me.serce.devkt.solidity.lang.core.SolidityTokenTypes;
@@ -10,16 +11,82 @@
1011
import org.ice1000.devkt.openapi.ColorScheme;
1112
import org.ice1000.devkt.openapi.ExtendedDevKtLanguage;
1213
import org.ice1000.devkt.openapi.PsiUtils;
14+
import org.ice1000.devkt.openapi.util.CompletionElement;
1315
import org.jetbrains.annotations.NotNull;
1416
import org.jetbrains.annotations.Nullable;
1517
import org.jetbrains.kotlin.com.intellij.psi.PsiElement;
1618
import org.jetbrains.kotlin.com.intellij.psi.TokenType;
1719
import org.jetbrains.kotlin.com.intellij.psi.tree.IElementType;
1820

21+
import java.util.Arrays;
22+
import java.util.HashSet;
23+
import java.util.Set;
24+
1925
public class Solidity<T> extends ExtendedDevKtLanguage<T> {
2026

21-
private static final @NotNull
22-
Pair<String, String> stringPair = new Pair<>("/*", "*/");
27+
private static final @NotNull Pair<String, String> stringPair = new Pair<>("/*", "*/");
28+
29+
private static final @NotNull Set<CompletionElement> predefinedCompletions = CollectionsKt.mapTo(Arrays.asList(
30+
"import",
31+
"as",
32+
"pragma",
33+
"new",
34+
"delete",
35+
"emit",
36+
"constructor",
37+
"contract",
38+
"library",
39+
"interface",
40+
"is",
41+
"struct",
42+
"function",
43+
"enum",
44+
"public",
45+
"private",
46+
"internal",
47+
"external",
48+
"constant",
49+
"payable",
50+
"pure",
51+
"view",
52+
"if",
53+
"else",
54+
"for",
55+
"while",
56+
"do",
57+
"break",
58+
"continue",
59+
"throw",
60+
"using",
61+
"return",
62+
"returns",
63+
"mapping",
64+
"event",
65+
"anonymous",
66+
"modifier",
67+
"assembly",
68+
"bytenumtype",
69+
"bytesnumtype",
70+
"fixednumtype",
71+
"intnumtype",
72+
"ufixednumtype",
73+
"uintnumtype",
74+
"string",
75+
"bool",
76+
"address",
77+
"var",
78+
"storage",
79+
"memory",
80+
"wei",
81+
"ether",
82+
"szabo",
83+
"finney",
84+
"seconds",
85+
"minutes",
86+
"hours",
87+
"days",
88+
"weeks",
89+
"years"), new HashSet<>(), CompletionElement::new);
2390

2491
public Solidity() {
2592
super(SolidityLanguage.INSTANCE, new SolidityParserDefinition());
@@ -45,6 +112,11 @@ public T attributesOf(@NotNull IElementType type, @NotNull ColorScheme<? extends
45112
else return super.attributesOf(type, colorScheme);
46113
}
47114

115+
@Override
116+
public @NotNull Set<CompletionElement> getInitialCompletionElementList() {
117+
return predefinedCompletions;
118+
}
119+
48120
@Override
49121
public boolean shouldAddAsCompletion(@NotNull PsiElement element) {
50122
return element instanceof SolParameterDef;
@@ -78,14 +150,12 @@ public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder<? su
78150
}
79151

80152
@Override
81-
public @NotNull
82-
Pair<String, String> getBlockComment() {
153+
public @NotNull Pair<String, String> getBlockComment() {
83154
return stringPair;
84155
}
85156

86157
@Override
87-
public @NotNull
88-
String getLineCommentStart() {
158+
public @NotNull String getLineCommentStart() {
89159
return "//";
90160
}
91161
}

0 commit comments

Comments
 (0)