From 6e35695d0903e4bfd0e87be42c57dc14af5e4ac9 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 20 Feb 2013 22:07:04 +0100 Subject: [PATCH] IDEA-84025 A class in different package interferes with code completion not needed anymore since space/dot don't select the autopopup item by default --- .../completion/JavaCharFilter.java | 47 +------------------ .../completion/JavaAutoPopupTest.groovy | 38 +-------------- .../completion/GroovyReferenceCharFilter.java | 5 -- .../completion/GroovyAutoPopupTest.groovy | 19 +------- 4 files changed, 5 insertions(+), 104 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java index efc621014690..b8a5c34c3b11 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java @@ -32,9 +32,7 @@ import com.intellij.lang.java.JavaLanguage; import com.intellij.patterns.PsiJavaPatterns; import com.intellij.psi.*; import com.intellij.psi.javadoc.PsiDocComment; -import com.intellij.psi.search.PsiShortNamesCache; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.psi.util.PsiUtil; public class JavaCharFilter extends CharFilter { @@ -43,45 +41,6 @@ public class JavaCharFilter extends CharFilter { return psiElement != null && psiElement.getParent() instanceof PsiLiteralExpression; } - public static boolean isNonImportedClassEntered(LookupImpl lookup, boolean orPackage) { - if (lookup.isSelectionTouched()) return false; - - CompletionProcess process = CompletionService.getCompletionService().getCurrentCompletion(); - if (process != null && !process.isAutopopupCompletion()) return false; - - LookupElement item = lookup.getCurrentItem(); - if (item == null) return false; - - PsiFile file = lookup.getPsiFile(); - if (file == null) return false; - - final String prefix = lookup.itemPattern(item); - for (PsiClass aClass : PsiShortNamesCache.getInstance(file.getProject()).getClassesByName(prefix, file.getResolveScope())) { - if (!isObfuscated(aClass) && PsiUtil.isAccessible(aClass, file, null)) { - return true; - } - } - - if (orPackage && prefix.length() > 1 && JavaPsiFacade.getInstance(file.getProject()).findPackage(prefix) != null) { - return true; - } - - return false; - } - - private static boolean isObfuscated(PsiClass psiClass) { - if (!(psiClass instanceof PsiCompiledElement)) { - return false; - } - - String name = psiClass.getName(); - if (name == null) { - return false; - } - - return name.length() <= 2 && Character.isLowerCase(name.charAt(0)); - } - @Override public Result acceptChar(char c, final int prefixLength, final Lookup lookup) { if (!lookup.getPsiFile().getLanguage().isKindOf(JavaLanguage.INSTANCE)) { @@ -116,11 +75,7 @@ public class JavaCharFilter extends CharFilter { return Result.HIDE_LOOKUP; } - if ((c == '[' || c == '<' || c == '.' || c == ' ' || c == '(' || c == ',') && - isNonImportedClassEntered((LookupImpl)lookup, c == '.')) { - return Result.HIDE_LOOKUP; - } - + if (c == '[') return CharFilter.Result.SELECT_ITEM_AND_FINISH_LOOKUP; if (c == '<' && o instanceof PsiClass) return Result.SELECT_ITEM_AND_FINISH_LOOKUP; if (c == '(') { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy index bc2a12897497..3ea84600cc2b 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy @@ -977,14 +977,6 @@ class Foo { assert myFixture.lookupElementStrings.containsAll(['private', 'protected']) } - public void testArrays() { - myFixture.configureByText "a.java", "class Foo {{ }}" - type 'Arrays.' - myFixture.checkResult "class Foo {{ Arrays. }}" - assert 'Arrays.asList' in myFixture.lookupElementStrings - } - - public void testExactMatchesFirst() { myFixture.configureByText("a.java", """ public class UTest { @@ -1068,26 +1060,6 @@ public class UTest { assert myFixture.lookupElementStrings == ['iterator'] } - public void testTypingNonImportedClassName() { - myFixture.addClass("package foo; public class Foo239 {} ") - myFixture.addClass("class Foo239Util {} ") - myFixture.addClass("class Foo239Util2 {} ") - - myFixture.configureByText "a.java", "class Foo {{ }}" - type 'Foo239 ' - assert myFixture.file.text.contains('Foo239 ') - - myFixture.configureByText "a.java", "class Foo {{ }}" - type 'Foo239' - edt { myFixture.performEditorAction IdeActions.ACTION_EDITOR_MOVE_CARET_DOWN } - type ' ' - assert myFixture.file.text.contains('Foo239Util2 ') - - myFixture.configureByText "a.java", "class Foo {{ }}" - type 'new Foo239(' - assert myFixture.file.text.contains('new Foo239()') - } - public void testTypingFirstVarargDot() { myFixture.configureByText "a.java", "class Foo { void foo(Foo[] a) { }; class Bar {}}" type '.' @@ -1219,6 +1191,8 @@ class Foo {{ } public void testPackageQualifier() { + CodeInsightSettings.instance.SELECT_AUTOPOPUP_SUGGESTIONS_BY_CHARS = false + myFixture.addClass("package com.too; public class Util {}") myFixture.configureByText 'a.java', 'class Foo { void foo(Object command) { }}' type 'com.t' @@ -1312,14 +1286,6 @@ class Foo { myFixture.checkResult('class ') } - public void "test check for class existing globally when typing comma"() { - myFixture.addClass('package p; public class XYZ {}') - myFixture.addClass('public class XYZAspect {}') - myFixture.configureByText 'a.java', 'class Foo extends Map' - type '' - myFixture.checkResult 'class Foo extends Map' - } - void joinCompletion() { myTester.joinCompletion() } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyReferenceCharFilter.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyReferenceCharFilter.java index c029930daeb2..5d0eadef2bc2 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyReferenceCharFilter.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyReferenceCharFilter.java @@ -47,11 +47,6 @@ public class GroovyReferenceCharFilter extends CharFilter { return Result.ADD_TO_PREFIX; } - if ((c == '[' || c == '<' || c == '.' || c == ' ' || c == '(' || c == ',') && - JavaCharFilter.isNonImportedClassEntered((LookupImpl)lookup, c == '.')) { - return Result.HIDE_LOOKUP; - } - int caret = lookup.getEditor().getCaretModel().getOffset(); if (c == '.' && prefixLength == 0 && !lookup.isSelectionTouched() && caret > 0 && lookup.getEditor().getDocument().getCharsSequence().charAt(caret - 1) == '.') { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyAutoPopupTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyAutoPopupTest.groovy index 8d1986df0d9f..87946e96cd0f 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyAutoPopupTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyAutoPopupTest.groovy @@ -120,16 +120,6 @@ class GroovyAutoPopupTest extends CompletionAutoPopupTestCase { } - public void testTypingNonImportedClassName() { - setFocusLookup() - - myFixture.addClass("package foo; public class Foo239 {} ") - myFixture.addClass("class Foo239Util {} ") - myFixture.configureByText "a.groovy", "" - type 'Foo239 ' - myFixture.checkResult 'Foo239 ' - } - private def setFocusLookup() { CodeInsightSettings.instance.AUTOPOPUP_FOCUS_POLICY = CodeInsightSettings.ALWAYS } @@ -251,13 +241,6 @@ class GroovyAutoPopupTest extends CompletionAutoPopupTestCase { myFixture.checkResult '[has:]' } - public void testTypingFqn() { - CodeInsightSettings.instance.COMPLETION_CASE_SENSITIVE = CodeInsightSettings.NONE - myFixture.configureByText 'a.groovy', '' - type 'java.' - myFixture.checkResult 'java.' - } - public void testPreferRightCasedVariant() { CodeInsightSettings.instance.COMPLETION_CASE_SENSITIVE = CodeInsightSettings.NONE myFixture.configureByText 'a.groovy', '' @@ -268,6 +251,8 @@ class GroovyAutoPopupTest extends CompletionAutoPopupTestCase { } public void testPackageQualifier() { + CodeInsightSettings.instance.SELECT_AUTOPOPUP_SUGGESTIONS_BY_CHARS = false + myFixture.addClass("package com.too; public class Util {}") myFixture.configureByText 'a.groovy', 'void foo(Object command) { }' type 'com.t'