don't suggest constant names in second basic completion

This commit is contained in:
peter
2011-08-17 16:41:22 +02:00
parent 52210c2abd
commit afa357adbd
3 changed files with 63 additions and 7 deletions
@@ -0,0 +1,58 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.codeInsight.completion;
import com.intellij.codeInsight.lookup.AutoCompletionPolicy;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.openapi.util.Ref;
import com.intellij.util.Consumer;
/**
* @author peter
*/
public class JavaBasicToClassNameDelegator extends CompletionContributor {
@Override
public void fillCompletionVariants(final CompletionParameters parameters, final CompletionResultSet result) {
if (parameters.getCompletionType() != CompletionType.BASIC ||
parameters.getInvocationCount() != 1 ||
!JavaCompletionContributor.mayStartClassName(result, false) ||
!JavaCompletionContributor.isClassNamePossible(parameters.getPosition())) {
return;
}
final Ref<Boolean> empty = Ref.create(true);
result.runRemainingContributors(parameters, new Consumer<CompletionResult>() {
public void consume(final CompletionResult lookupElement) {
empty.set(false);
result.passResult(lookupElement);
}
});
if (empty.get()) {
JavaClassNameCompletionContributor.addAllClasses(parameters, JavaCompletionSorting.addJavaSorting(parameters, result), new Consumer<LookupElement>() {
@Override
public void consume(LookupElement element) {
JavaPsiClassReferenceElement classElement = element.as(JavaPsiClassReferenceElement.CLASS_CONDITION_KEY);
if (classElement != null) {
classElement.setAutoCompletionPolicy(AutoCompletionPolicy.NEVER_AUTOCOMPLETE);
}
result.addElement(element);
}
});
}
}
}
@@ -24,16 +24,12 @@ import com.intellij.psi.PsiFile;
/**
* @author peter
*/
public class BasicToClassNameDelegator extends AbstractBasicToClassNameDelegator {
public class XmlBasicToClassNameDelegator extends AbstractBasicToClassNameDelegator {
@Override
protected boolean isClassNameCompletionSupported(CompletionResultSet result, PsiFile file, PsiElement position) {
if (!JavaCompletionContributor.mayStartClassName(result, false)) return false;
if (file.getLanguage() == StdLanguages.JAVA) {
return JavaCompletionContributor.isClassNamePossible(position);
}
return file.getLanguage().isKindOf(StdLanguages.XML);
}
+4 -2
View File
@@ -193,8 +193,10 @@
<completion.confidence language="JAVA" implementationClass="com.intellij.codeInsight.completion.AlwaysFocusLookup" id="javaTrue" order="last"/>
<completion.confidence language="JAVA" implementationClass="com.intellij.codeInsight.completion.SkipAutopopupInStrings" id="javaSkipAutopopupInStrings"/>
<completion.contributor language="any" implementationClass="com.intellij.codeInsight.completion.BasicToClassNameDelegator" id="basic2ClassName"
order="first, before javaMemberName, after xml"/>
<completion.contributor language="JAVA" implementationClass="com.intellij.codeInsight.completion.JavaBasicToClassNameDelegator" id="javaBasic2ClassName"
order="first, before javaMemberName"/>
<completion.contributor language="XML" implementationClass="com.intellij.codeInsight.completion.XmlBasicToClassNameDelegator" id="basic2ClassName"
order="first, after xml"/>
<completion.contributor language="JAVA" implementationClass="com.intellij.codeInsight.completion.JavaCompletionContributor" id="javaLegacy"
order="last, before legacy, before default, before javaClassName"/>
<completion.contributor language="any" implementationClass="com.intellij.codeInsight.completion.JavaClassReferenceCompletionContributor"