From 2fd1cd738eb33b92005bd41406f20d94df73b9dd Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 21 Nov 2011 16:14:27 +0100 Subject: [PATCH] if a prefix entered during autopopup matches only some scrambled class, don't cancel the lookup (IDEA-76928) --- .../completion/JavaCharFilter.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 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 8c8289d98fcd..0a7274a33f07 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java @@ -55,14 +55,29 @@ public class JavaCharFilter extends CharFilter { Object o = item.getObject(); if (o instanceof PsiClass && ((PsiClass)o).getName().length() > lookup.itemPattern(item).length()) { - if (PsiShortNamesCache.getInstance(file.getProject()).getClassesByName(lookup.itemPattern(item), file.getResolveScope()).length > 0) { - return true; + for (PsiClass aClass : PsiShortNamesCache.getInstance(file.getProject()).getClassesByName(lookup.itemPattern(item), file.getResolveScope())) { + if (!isObfuscated(aClass)) { + 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() == 1 && Character.isLowerCase(name.charAt(0)); + } + public Result acceptChar(char c, final int prefixLength, final Lookup lookup) { if (!lookup.isCompletion()) return null;