summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java')
-rw-r--r--platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java51
1 files changed, 25 insertions, 26 deletions
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java
index fcb080dcd277..3bdd05f58a40 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java
@@ -316,7 +316,6 @@ public class CodeCompletionHandlerBase {
final LookupElement[] allItems = data.get();
if (allItems != null && !indicator.isRunning() && !indicator.isCanceled()) { // the completion is really finished, now we may auto-insert or show lookup
completionFinished(initContext.getStartOffset(), initContext.getSelectionEndOffset(), indicator, allItems, hasModifiers);
- checkNotSync(indicator, allItems);
return;
}
}
@@ -424,18 +423,18 @@ public class CodeCompletionHandlerBase {
LOG.assertTrue(!indicator.isRunning(), "running");
LOG.assertTrue(!indicator.isCanceled(), "canceled");
- indicator.getLookup().refreshUi(true, false);
- final AutoCompletionDecision decision = shouldAutoComplete(indicator, items);
- if (decision == AutoCompletionDecision.SHOW_LOOKUP) {
- CompletionServiceImpl.setCompletionPhase(new CompletionPhase.ItemsCalculated(indicator));
- indicator.getLookup().setCalculating(false);
- indicator.showLookup();
- }
- else if (decision instanceof AutoCompletionDecision.InsertItem) {
- final Runnable restorePrefix = rememberDocumentState(indicator.getEditor());
+ try {
+ indicator.getLookup().refreshUi(true, false);
+ final AutoCompletionDecision decision = shouldAutoComplete(indicator, items);
+ if (decision == AutoCompletionDecision.SHOW_LOOKUP) {
+ CompletionServiceImpl.setCompletionPhase(new CompletionPhase.ItemsCalculated(indicator));
+ indicator.getLookup().setCalculating(false);
+ indicator.showLookup();
+ }
+ else if (decision instanceof AutoCompletionDecision.InsertItem) {
+ final Runnable restorePrefix = rememberDocumentState(indicator.getEditor());
- final LookupElement item = ((AutoCompletionDecision.InsertItem)decision).getElement();
- try {
+ final LookupElement item = ((AutoCompletionDecision.InsertItem)decision).getElement();
CommandProcessor.getInstance().executeCommand(indicator.getProject(), new Runnable() {
@Override
public void run() {
@@ -443,22 +442,22 @@ public class CodeCompletionHandlerBase {
indicator.getLookup().finishLookup(Lookup.AUTO_INSERT_SELECT_CHAR, item);
}
}, "Autocompletion", null);
- }
- catch (Throwable e) {
- CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion);
- LOG.error(e);
- return;
- }
- // the insert handler may have started a live template with completion
- if (CompletionService.getCompletionService().getCurrentCompletion() == null &&
- // ...or scheduled another autopopup
- !CompletionServiceImpl.isPhase(CompletionPhase.CommittingDocuments.class)) {
- CompletionServiceImpl.setCompletionPhase(hasModifiers? new CompletionPhase.InsertedSingleItem(indicator, restorePrefix) : CompletionPhase.NoCompletion);
+ // the insert handler may have started a live template with completion
+ if (CompletionService.getCompletionService().getCurrentCompletion() == null &&
+ // ...or scheduled another autopopup
+ !CompletionServiceImpl.isPhase(CompletionPhase.CommittingDocuments.class)) {
+ CompletionServiceImpl.setCompletionPhase(hasModifiers? new CompletionPhase.InsertedSingleItem(indicator, restorePrefix) : CompletionPhase.NoCompletion);
+ }
+ } else if (decision == AutoCompletionDecision.CLOSE_LOOKUP) {
+ LookupManager.getInstance(indicator.getProject()).hideActiveLookup();
}
- checkNotSync(indicator, items);
- } else if (decision == AutoCompletionDecision.CLOSE_LOOKUP) {
- LookupManager.getInstance(indicator.getProject()).hideActiveLookup();
+ }
+ catch (Throwable e) {
+ CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion);
+ LOG.error(e);
+ }
+ finally {
checkNotSync(indicator, items);
}
}