From 4886adccf5d9d38636410cebba737b4f98e6a85c Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 17 Jul 2018 17:24:52 +0200 Subject: [PATCH] unify finishing lookup behavior for templates & completion (IDEA-195114) --- .../template/JavaLiveTemplateTest.groovy | 23 +++++++++++++ ...CharFilter.java => DefaultCharFilter.java} | 4 +-- .../lookup/impl/LookupTypedHandler.java | 6 +--- .../refactoring/IdentifierCharFilter.java | 33 ------------------- .../src/META-INF/LangExtensions.xml | 3 +- 5 files changed, 26 insertions(+), 43 deletions(-) rename platform/lang-impl/src/com/intellij/codeInsight/completion/{CompletionCharFilter.java => DefaultCharFilter.java} (91%) delete mode 100644 platform/lang-impl/src/com/intellij/refactoring/IdentifierCharFilter.java diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/template/JavaLiveTemplateTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/template/JavaLiveTemplateTest.groovy index 579334a6b5e1..84257eb38d74 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/template/JavaLiveTemplateTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/template/JavaLiveTemplateTest.groovy @@ -2,6 +2,7 @@ package com.intellij.java.codeInsight.template import com.intellij.JavaTestUtil +import com.intellij.codeInsight.CodeInsightSettings import com.intellij.codeInsight.daemon.impl.quickfix.EmptyExpression import com.intellij.codeInsight.lookup.Lookup import com.intellij.codeInsight.template.Template @@ -482,6 +483,28 @@ java.util.List list; } }}''' + } + void "test overtyping suggestion with a quote"() { + CodeInsightSettings.instance.SELECT_AUTOPOPUP_SUGGESTIONS_BY_CHARS = true + + myFixture.configureByText 'a.java', ''' +class A { + { + String s; + s.toString(); + } +}''' + myFixture.doHighlighting() + myFixture.launchAction(myFixture.findSingleIntention('Initialize variable')) + myFixture.type('"') + myFixture.checkResult ''' +class A { + { + String s = ""; + s.toString(); + } +}''' + assert !myFixture.lookup } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionCharFilter.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/DefaultCharFilter.java similarity index 91% rename from platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionCharFilter.java rename to platform/lang-impl/src/com/intellij/codeInsight/completion/DefaultCharFilter.java index 9eaec0da6603..5fd9b041440b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionCharFilter.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/DefaultCharFilter.java @@ -19,12 +19,10 @@ package com.intellij.codeInsight.completion; import com.intellij.codeInsight.lookup.CharFilter; import com.intellij.codeInsight.lookup.Lookup; -public class CompletionCharFilter extends CharFilter { +public class DefaultCharFilter extends CharFilter { @Override public Result acceptChar(char c, final int prefixLength, final Lookup lookup) { - if (!lookup.isCompletion()) return null; - if (Character.isJavaIdentifierPart(c)) return Result.ADD_TO_PREFIX; switch(c){ case '.': diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupTypedHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupTypedHandler.java index 1d8cc441bd18..4f49f142cf4e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupTypedHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupTypedHandler.java @@ -46,8 +46,6 @@ import com.intellij.psi.util.PsiUtilBase; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Arrays; - public class LookupTypedHandler extends TypedActionHandlerBase { public LookupTypedHandler(@Nullable TypedActionHandler originalHandler) { @@ -182,9 +180,7 @@ public class LookupTypedHandler extends TypedActionHandlerBase { if (filtersDecision != null) { return filtersDecision; } - throw new AssertionError("Typed char not handler by char filter: c=" + charTyped + - "; prefix=" + lookup.getCurrentItem() + - "; filters=" + Arrays.toString(getFilters())); + return CharFilter.Result.HIDE_LOOKUP; } @Nullable diff --git a/platform/lang-impl/src/com/intellij/refactoring/IdentifierCharFilter.java b/platform/lang-impl/src/com/intellij/refactoring/IdentifierCharFilter.java deleted file mode 100644 index e3427a3d37aa..000000000000 --- a/platform/lang-impl/src/com/intellij/refactoring/IdentifierCharFilter.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2000-2009 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.refactoring; - -import com.intellij.codeInsight.lookup.CharFilter; -import com.intellij.codeInsight.lookup.Lookup; - -/** - * @author peter -*/ -public class IdentifierCharFilter extends CharFilter { - - @Override - public Result acceptChar(char c, final int prefixLength, final Lookup lookup) { - if (lookup.isCompletion()) return null; - - if (Character.isJavaIdentifierPart(c)) return Result.ADD_TO_PREFIX; - return Result.SELECT_ITEM_AND_FINISH_LOOKUP; - } -} diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml index bfbcbd2f30ae..b064653262a1 100644 --- a/platform/platform-resources/src/META-INF/LangExtensions.xml +++ b/platform/platform-resources/src/META-INF/LangExtensions.xml @@ -613,8 +613,7 @@ - - +