diff --git a/platform/lang-impl/src/com/intellij/application/options/CodeCompletion.form b/platform/lang-impl/src/com/intellij/application/options/CodeCompletion.form
index cb148be0fa62..36d917667655 100644
--- a/platform/lang-impl/src/com/intellij/application/options/CodeCompletion.form
+++ b/platform/lang-impl/src/com/intellij/application/options/CodeCompletion.form
@@ -56,7 +56,7 @@
-
+
@@ -64,16 +64,6 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/platform/lang-impl/src/com/intellij/application/options/CodeCompletionPanel.java b/platform/lang-impl/src/com/intellij/application/options/CodeCompletionPanel.java
index 4a19f6d197cf..9021da119bfe 100644
--- a/platform/lang-impl/src/com/intellij/application/options/CodeCompletionPanel.java
+++ b/platform/lang-impl/src/com/intellij/application/options/CodeCompletionPanel.java
@@ -62,7 +62,6 @@ public class CodeCompletionPanel {
private JBRadioButton myAllLetters;
private JBLabel myBasicShortcut;
private JBLabel mySmartShortcut;
- private JBLabel myDocComment;
public CodeCompletionPanel() {
ChangeListener updateCaseCheckboxes = __ -> {
@@ -78,7 +77,6 @@ public class CodeCompletionPanel {
myBasicShortcut.setForeground(JBColor.GRAY);
mySmartShortcut.setForeground(JBColor.GRAY);
- myDocComment.setForeground(JBColor.GRAY);
myCbAutocompletion.addActionListener(
new ActionListener() {
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupManagerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupManagerImpl.java
index 913aa31093d1..6365178a86ff 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupManagerImpl.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupManagerImpl.java
@@ -35,8 +35,6 @@ import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.IndexNotReadyException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
-import com.intellij.psi.PsiDocumentManager;
-import com.intellij.psi.PsiFile;
import com.intellij.ui.LightweightHint;
import com.intellij.util.Alarm;
import com.intellij.util.BitUtil;
@@ -129,31 +127,9 @@ public class LookupManagerImpl extends LookupManager {
@NotNull final LookupArranger arranger) {
hideActiveLookup();
- final CodeInsightSettings settings = CodeInsightSettings.getInstance();
-
- final PsiFile psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(editor.getDocument());
-
final LookupImpl lookup = createLookup(editor, arranger, myProject);
final Alarm alarm = new Alarm();
- final Runnable request = () -> {
- if (myActiveLookup != lookup) return;
-
- LookupElement currentItem = lookup.getCurrentItem();
- if (currentItem != null && currentItem.isValid() && isAutoPopupJavadocSupportedBy(currentItem)) {
- final CompletionProcess completion = CompletionService.getCompletionService().getCurrentCompletion();
- if (completion != null && !completion.isAutopopupCompletion()) {
- try {
- DocumentationManager.getInstance(myProject).showJavaDocInfo(editor, psiFile, false);
- }
- catch (IndexNotReadyException ignored) {
- }
- }
- }
- };
- if (settings.AUTO_POPUP_JAVADOC_INFO) {
- alarm.addRequest(request, settings.JAVADOC_INFO_DELAY);
- }
ApplicationManager.getApplication().assertIsDispatchThread();
@@ -173,8 +149,9 @@ public class LookupManagerImpl extends LookupManager {
@Override
public void currentItemChanged(LookupEvent event) {
alarm.cancelAllRequests();
+ CodeInsightSettings settings = CodeInsightSettings.getInstance();
if (settings.AUTO_POPUP_JAVADOC_INFO && DocumentationManager.getInstance(myProject).getDocInfoHint() == null) {
- alarm.addRequest(request, settings.JAVADOC_INFO_DELAY);
+ alarm.addRequest(() -> showJavadoc(lookup), settings.JAVADOC_INFO_DELAY);
}
}
@@ -208,7 +185,29 @@ public class LookupManagerImpl extends LookupManager {
return lookup;
}
- protected boolean isAutoPopupJavadocSupportedBy(LookupElement lookupItem) {
+ private void showJavadoc(LookupImpl lookup) {
+ if (myActiveLookup != lookup) return;
+
+ DocumentationManager docManager = DocumentationManager.getInstance(myProject);
+ if (docManager.getDocInfoHint() != null) return; // will auto-update
+
+ LookupElement currentItem = lookup.getCurrentItem();
+ CompletionProcess completion = CompletionService.getCompletionService().getCurrentCompletion();
+ if (currentItem != null && currentItem.isValid() && isAutoPopupJavadocSupportedBy(currentItem) && completion != null) {
+ try {
+ boolean hideLookupWithDoc = completion.isAutopopupCompletion() || CodeInsightSettings.getInstance().JAVADOC_INFO_DELAY == 0;
+ docManager.showJavaDocInfo(lookup.getEditor(), lookup.getPsiFile(), false, () -> {
+ if (hideLookupWithDoc && completion == CompletionService.getCompletionService().getCurrentCompletion()) {
+ hideActiveLookup();
+ }
+ });
+ }
+ catch (IndexNotReadyException ignored) {
+ }
+ }
+ }
+
+ protected boolean isAutoPopupJavadocSupportedBy(@SuppressWarnings("unused") LookupElement lookupItem) {
return true;
}
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java
index b394469cc6f0..634414b5a695 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java
@@ -19,6 +19,7 @@ package com.intellij.codeInsight.lookup.impl.actions;
import com.intellij.codeInsight.completion.CodeCompletionFeatures;
import com.intellij.codeInsight.completion.CompletionProcess;
import com.intellij.codeInsight.completion.CompletionService;
+import com.intellij.codeInsight.hint.HintManagerImpl;
import com.intellij.codeInsight.lookup.Lookup;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
@@ -36,7 +37,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.List;
-public abstract class ChooseItemAction extends EditorAction {
+public abstract class ChooseItemAction extends EditorAction implements HintManagerImpl.ActionToIgnore {
public ChooseItemAction(Handler handler) {
super(handler);
}