Commit f1f0a5d2 authored by peter's avatar peter
Browse files

completion: show a "no suggestions" hint in dumb mode

parent 17095a16
Branches unavailable Tags unavailable
No related merge requests found
Showing with 15 additions and 24 deletions
+15 -24
...@@ -17,6 +17,7 @@ import com.intellij.diagnostic.PerformanceWatcher; ...@@ -17,6 +17,7 @@ import com.intellij.diagnostic.PerformanceWatcher;
import com.intellij.featureStatistics.FeatureUsageTracker; import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.injected.editor.DocumentWindow; import com.intellij.injected.editor.DocumentWindow;
import com.intellij.injected.editor.EditorWindow; import com.intellij.injected.editor.EditorWindow;
import com.intellij.lang.LangBundle;
import com.intellij.openapi.Disposable; import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ApplicationManager;
...@@ -743,29 +744,25 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement ...@@ -743,29 +744,25 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement
LOG.assertTrue(!isAutopopupCompletion()); LOG.assertTrue(!isAutopopupCompletion());
if (!myHandler.invokedExplicitly) {
CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion);
return;
}
CompletionParameters parameters = getParameters(); CompletionParameters parameters = getParameters();
if (parameters != null && runContributorsOnEmptyLookup(awaitSecondInvocation, parameters)) { if (myHandler.invokedExplicitly && parameters != null) {
return; LightweightHint hint = showErrorHint(getProject(), getEditor(), getNoSuggestionsMessage(parameters));
if (awaitSecondInvocation) {
CompletionServiceImpl.setCompletionPhase(new CompletionPhase.NoSuggestionsHint(hint, this));
return;
}
} }
CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion); CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion);
} }
private boolean runContributorsOnEmptyLookup(boolean awaitSecondInvocation, CompletionParameters parameters) { private String getNoSuggestionsMessage(CompletionParameters parameters) {
for (CompletionContributor contributor : CompletionContributor.forParameters(parameters)) { String text = CompletionContributor.forParameters(parameters)
final String text = contributor.handleEmptyLookup(parameters, getEditor()); .stream()
if (StringUtil.isNotEmpty(text)) { .map(c -> c.handleEmptyLookup(parameters, getEditor()))
LightweightHint hint = showErrorHint(getProject(), getEditor(), text); .filter(StringUtil::isNotEmpty)
CompletionServiceImpl.setCompletionPhase( .findFirst()
awaitSecondInvocation ? new CompletionPhase.NoSuggestionsHint(hint, this) : CompletionPhase.NoCompletion); .orElse(LangBundle.message("completion.no.suggestions"));
return true; return DumbService.isDumb(getProject()) ? text + "; results might be incomplete while indexing is in progress" : text;
}
}
return false;
} }
private static LightweightHint showErrorHint(Project project, Editor editor, String text) { private static LightweightHint showErrorHint(Project project, Editor editor, String text) {
......
...@@ -21,7 +21,6 @@ import com.intellij.codeInsight.lookup.LookupElement; ...@@ -21,7 +21,6 @@ import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.impl.LookupImpl; import com.intellij.codeInsight.lookup.impl.LookupImpl;
import com.intellij.lang.LangBundle; import com.intellij.lang.LangBundle;
import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
...@@ -62,11 +61,6 @@ public class DefaultCompletionContributor extends CompletionContributor { ...@@ -62,11 +61,6 @@ public class DefaultCompletionContributor extends CompletionContributor {
} }
} }
@Override
public String handleEmptyLookup(@NotNull final CompletionParameters parameters, final Editor editor) {
return LangBundle.message("completion.no.suggestions");
}
@Override @Override
public AutoCompletionDecision handleAutoCompletionPossibility(@NotNull AutoCompletionContext context) { public AutoCompletionDecision handleAutoCompletionPossibility(@NotNull AutoCompletionContext context) {
final LookupElement[] items = context.getItems(); final LookupElement[] items = context.getItems();
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment