diff options
Diffstat (limited to 'java/java-impl/src/com/intellij/codeInsight/completion/JavaChainLookupElement.java')
-rw-r--r-- | java/java-impl/src/com/intellij/codeInsight/completion/JavaChainLookupElement.java | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaChainLookupElement.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaChainLookupElement.java index 4ff8ca2ec5f8..cbc9653b6adf 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaChainLookupElement.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaChainLookupElement.java @@ -21,6 +21,7 @@ import com.intellij.diagnostic.AttachmentFactory; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.util.ClassConditionKey; +import com.intellij.openapi.util.Key; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; @@ -38,6 +39,7 @@ import java.util.Set; * @author peter */ public class JavaChainLookupElement extends LookupElementDecorator<LookupElement> implements TypedLookupItem { + public static final Key<Boolean> CHAIN_QUALIFIER = Key.create("CHAIN_QUALIFIER"); private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.completion.JavaChainLookupElement"); public static final ClassConditionKey<JavaChainLookupElement> CLASS_CONDITION_KEY = ClassConditionKey.create(JavaChainLookupElement.class); private final LookupElement myQualifier; @@ -109,9 +111,12 @@ public class JavaChainLookupElement extends LookupElementDecorator<LookupElement public void handleInsert(InsertionContext context) { final Document document = context.getEditor().getDocument(); document.replaceString(context.getStartOffset(), context.getTailOffset(), ";"); + myQualifier.putUserData(CHAIN_QUALIFIER, true); final InsertionContext qualifierContext = CompletionUtil.emulateInsertion(context, context.getStartOffset(), myQualifier); OffsetKey oldStart = context.trackOffset(context.getStartOffset(), false); + PsiDocumentManager.getInstance(context.getProject()).doPostponedOperationsAndUnblockDocument(document); + int start = CharArrayUtil.shiftForward(context.getDocument().getCharsSequence(), context.getStartOffset(), " \t\n"); if (shouldParenthesizeQualifier(context.getFile(), start, qualifierContext.getTailOffset())) { final String space = CodeStyleSettingsManager.getSettings(qualifierContext.getProject()).SPACE_WITHIN_PARENTHESES ? " " : ""; @@ -165,6 +170,7 @@ public class JavaChainLookupElement extends LookupElementDecorator<LookupElement if (expr instanceof PsiJavaCodeReferenceElement || expr instanceof PsiMethodCallExpression || + expr instanceof PsiNewExpression || expr instanceof PsiArrayAccessExpression) { return false; } |