Remove "ref" and "default" keywords from completion. Start using tokens for getting keyword completion constants.

This commit is contained in:
Nikolay Krasko
2012-01-25 17:32:59 +04:00
parent 9421475ef4
commit 79d5c2e3ed
4 changed files with 49 additions and 22 deletions
@@ -18,12 +18,16 @@ import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.ProcessingContext; import com.intellij.util.ProcessingContext;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lexer.JetToken;
import org.jetbrains.jet.plugin.completion.handlers.JetFunctionInsertHandler; import org.jetbrains.jet.plugin.completion.handlers.JetFunctionInsertHandler;
import org.jetbrains.jet.plugin.completion.handlers.JetKeywordInsertHandler; import org.jetbrains.jet.plugin.completion.handlers.JetKeywordInsertHandler;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import static org.jetbrains.jet.lexer.JetTokens.*;
/** /**
* A keyword contributor for Kotlin * A keyword contributor for Kotlin
* *
@@ -42,7 +46,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
new LeftNeighbour(new TextFilter(".")) new LeftNeighbour(new TextFilter("."))
)); ));
private final static List<String> FUNCTION_KEYWORDS = Lists.newArrayList("get", "set"); private final static List<String> FUNCTION_KEYWORDS = Lists.newArrayList(GET_KEYWORD.toString(), SET_KEYWORD.toString());
private static class CommentFilter implements ElementFilter { private static class CommentFilter implements ElementFilter {
@Override @Override
@@ -169,29 +173,58 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
public JetKeywordCompletionContributor() { public JetKeywordCompletionContributor() {
registerScopeKeywordsCompletion(new InTopFilter(), registerScopeKeywordsCompletion(new InTopFilter(),
"abstract", "class", "enum", "final", "fun", "get", "import", "inline", ABSTRACT_KEYWORD, CLASS_KEYWORD, ENUM_KEYWORD,
"internal", "open", "package", "private", "protected", "public", "set", FINAL_KEYWORD, FUN_KEYWORD, GET_KEYWORD,
"trait", "type", "val", "var"); IMPORT_KEYWORD, INLINE_KEYWORD, INTERNAL_KEYWORD,
OPEN_KEYWORD, PACKAGE_KEYWORD, PRIVATE_KEYWORD,
PROTECTED_KEYWORD, PUBLIC_KEYWORD, SET_KEYWORD,
TRAIT_KEYWORD, TYPE_KEYWORD, VAL_KEYWORD,
VAR_KEYWORD);
registerScopeKeywordsCompletion(new InClassBodyFilter(), registerScopeKeywordsCompletion(new InClassBodyFilter(),
"abstract", "class", "enum", "final", "fun", "get", "inline", "internal", ABSTRACT_KEYWORD, CLASS_KEYWORD, ENUM_KEYWORD,
"object", "open", "override", "private", "protected", "public", "set", "trait", FINAL_KEYWORD, FUN_KEYWORD, GET_KEYWORD,
"type", "val", "var"); INLINE_KEYWORD, INTERNAL_KEYWORD, OBJECT_KEYWORD,
OPEN_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD,
PROTECTED_KEYWORD, PUBLIC_KEYWORD, SET_KEYWORD,
TRAIT_KEYWORD, TYPE_KEYWORD, VAL_KEYWORD,
VAR_KEYWORD);
registerScopeKeywordsCompletion(new InNonClassBlockFilter(), registerScopeKeywordsCompletion(new InNonClassBlockFilter(),
"as", "break", "by", "catch", "class", "continue", "default", "do", "else", AS_KEYWORD, BREAK_KEYWORD, BY_KEYWORD,
"enum", "false", "finally", "for", "fun", "get", "if", "in", "inline", CATCH_KEYWORD, CLASS_KEYWORD, CONTINUE_KEYWORD,
"internal", "is", "null", "object", "private", "protected", "public", "ref", DO_KEYWORD, ELSE_KEYWORD, ENUM_KEYWORD,
"return", "set", "super", "This", "this", "throw", "trait", "true", "try", FALSE_KEYWORD, FINALLY_KEYWORD, FOR_KEYWORD,
"type", "val", "var", "vararg", "when", "where", "while"); FUN_KEYWORD, GET_KEYWORD, IF_KEYWORD,
IN_KEYWORD, INLINE_KEYWORD, INTERNAL_KEYWORD,
IS_KEYWORD, NULL_KEYWORD, OBJECT_KEYWORD,
PRIVATE_KEYWORD, PROTECTED_KEYWORD, PUBLIC_KEYWORD,
RETURN_KEYWORD, SET_KEYWORD, SUPER_KEYWORD,
CAPITALIZED_THIS_KEYWORD, THIS_KEYWORD, THROW_KEYWORD,
TRAIT_KEYWORD, TRUE_KEYWORD, TRY_KEYWORD,
TYPE_KEYWORD, VAL_KEYWORD, VAR_KEYWORD,
VARARG_KEYWORD, WHEN_KEYWORD, WHERE_KEYWORD,
WHILE_KEYWORD);
registerScopeKeywordsCompletion(new InPropertyFilter(), "else", "false", "if", "null", "this", "true"); registerScopeKeywordsCompletion(new InPropertyFilter(),
ELSE_KEYWORD, FALSE_KEYWORD, IF_KEYWORD,
NULL_KEYWORD, THIS_KEYWORD, TRUE_KEYWORD);
registerScopeKeywordsCompletion(new InParametersFilter(), "ref", "out"); registerScopeKeywordsCompletion(new InParametersFilter(), OUT_KEYWORD);
} }
private void registerScopeKeywordsCompletion(final ElementFilter placeFilter, String... keywords) { private void registerScopeKeywordsCompletion(final ElementFilter placeFilter, JetToken... keywords) {
extend(CompletionType.BASIC, getPlacePattern(placeFilter), new KeywordsCompletionProvider(keywords)); extend(CompletionType.BASIC, getPlacePattern(placeFilter),
new KeywordsCompletionProvider(convertTokensToStrings(keywords)));
}
private static String[] convertTokensToStrings(JetToken... keywords) {
final ArrayList<String> strings = new ArrayList<String>(keywords.length);
for (JetToken keyword : keywords) {
strings.add(keyword.toString());
}
return strings.toArray(new String[strings.size()]);
} }
private static ElementPattern<PsiElement> getPlacePattern(final ElementFilter placeFilter) { private static ElementPattern<PsiElement> getPlacePattern(final ElementFilter placeFilter) {
@@ -10,7 +10,6 @@ fun foo() {
// EXIST: catch // EXIST: catch
// EXIST: class // EXIST: class
// EXIST: continue // EXIST: continue
// EXIST: default
// EXIST: do // EXIST: do
// EXIST: else // EXIST: else
// EXIST: enum // EXIST: enum
@@ -35,7 +34,6 @@ fun foo() {
// EXIST: private // EXIST: private
// EXIST: protected // EXIST: protected
// EXIST: public // EXIST: public
// EXIST: ref
// EXIST: return // EXIST: return
// EXIST: set // EXIST: set
// EXIST: super // EXIST: super
@@ -10,7 +10,6 @@ fun test(<caret>) {
// ABSENT: catch // ABSENT: catch
// ABSENT: class // ABSENT: class
// ABSENT: continue // ABSENT: continue
// ABSENT: default
// ABSENT: do // ABSENT: do
// ABSENT: else // ABSENT: else
// ABSENT: enum // ABSENT: enum
@@ -35,7 +34,6 @@ fun test(<caret>) {
// ABSENT: private // ABSENT: private
// ABSENT: protected // ABSENT: protected
// ABSENT: public // ABSENT: public
// EXIST: ref
// ABSENT: return // ABSENT: return
// ABSENT: set // ABSENT: set
// ABSENT: super // ABSENT: super
@@ -10,7 +10,6 @@ fun foo() {
// EXIST: catch // EXIST: catch
// EXIST: class // EXIST: class
// EXIST: continue // EXIST: continue
// EXIST: default
// EXIST: do // EXIST: do
// EXIST: else // EXIST: else
// EXIST: enum // EXIST: enum
@@ -35,7 +34,6 @@ fun foo() {
// EXIST: private // EXIST: private
// EXIST: protected // EXIST: protected
// EXIST: public // EXIST: public
// EXIST: ref
// EXIST: return // EXIST: return
// EXIST: set // EXIST: set
// EXIST: super // EXIST: super