Replace prefix matcher completely to supply on typing filtering (Leda only)

This commit is contained in:
Nikolay Krasko
2012-07-25 22:17:23 +04:00
parent 27b22105b4
commit cb3bca9f39
2 changed files with 20 additions and 11 deletions
@@ -17,14 +17,13 @@
package org.jetbrains.jet.plugin.completion;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.intellij.codeInsight.CommentUtil;
import com.intellij.codeInsight.completion.*;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.patterns.ElementPattern;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.psi.PsiElement;
@@ -38,7 +37,6 @@ import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.ArrayUtil;
import com.intellij.util.ProcessingContext;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lexer.JetToken;
import org.jetbrains.jet.lexer.JetTokens;
@@ -239,6 +237,23 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
}
}
private static class SimplePrefixMatcher extends PrefixMatcher {
protected SimplePrefixMatcher(String prefix) {
super(prefix);
}
@Override
public boolean prefixMatches(@NotNull String name) {
return StringUtil.startsWithIgnoreCase(name, getPrefix());
}
@NotNull
@Override
public PrefixMatcher cloneWithPrefix(@NotNull String prefix) {
return new SimplePrefixMatcher(prefix);
}
}
public static class KeywordsCompletionProvider extends CompletionProvider<CompletionParameters> {
private final Collection<LookupElement> elements;
@@ -266,13 +281,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
@Override
protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context,
@NotNull final CompletionResultSet result) {
result.addAllElements(Iterables.filter(elements, new Predicate<LookupElement>() {
@Override
public boolean apply(@Nullable LookupElement element) {
assert element != null;
return result.getPrefixMatcher().isStartMatch(element.getLookupString());
}
}));
result.withPrefixMatcher(new SimplePrefixMatcher(result.getPrefixMatcher().getPrefix())).addAllElements(elements);
}
}
@@ -78,6 +78,6 @@ public class JetConfidenceTest extends LightCompletionTestCase {
@Override
protected void complete() {
new CodeCompletionHandlerBase(CompletionType.BASIC, false, true, true).invokeCompletion(
getProject(), getEditor(), 0, false, true);
getProject(), getEditor(), 0, false, false);
}
}