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;
import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.injected.editor.DocumentWindow;
import com.intellij.injected.editor.EditorWindow;
import com.intellij.lang.LangBundle;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.openapi.application.ApplicationManager;
......@@ -743,29 +744,25 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement
LOG.assertTrue(!isAutopopupCompletion());
if (!myHandler.invokedExplicitly) {
CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion);
return;
}
CompletionParameters parameters = getParameters();
if (parameters != null && runContributorsOnEmptyLookup(awaitSecondInvocation, parameters)) {
return;
if (myHandler.invokedExplicitly && parameters != null) {
LightweightHint hint = showErrorHint(getProject(), getEditor(), getNoSuggestionsMessage(parameters));
if (awaitSecondInvocation) {
CompletionServiceImpl.setCompletionPhase(new CompletionPhase.NoSuggestionsHint(hint, this));
return;
}
}
CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion);
}
private boolean runContributorsOnEmptyLookup(boolean awaitSecondInvocation, CompletionParameters parameters) {
for (CompletionContributor contributor : CompletionContributor.forParameters(parameters)) {
final String text = contributor.handleEmptyLookup(parameters, getEditor());
if (StringUtil.isNotEmpty(text)) {
LightweightHint hint = showErrorHint(getProject(), getEditor(), text);
CompletionServiceImpl.setCompletionPhase(
awaitSecondInvocation ? new CompletionPhase.NoSuggestionsHint(hint, this) : CompletionPhase.NoCompletion);
return true;
}
}
return false;
private String getNoSuggestionsMessage(CompletionParameters parameters) {
String text = CompletionContributor.forParameters(parameters)
.stream()
.map(c -> c.handleEmptyLookup(parameters, getEditor()))
.filter(StringUtil::isNotEmpty)
.findFirst()
.orElse(LangBundle.message("completion.no.suggestions"));
return DumbService.isDumb(getProject()) ? text + "; results might be incomplete while indexing is in progress" : text;
}
private static LightweightHint showErrorHint(Project project, Editor editor, String text) {
......
......@@ -21,7 +21,6 @@ import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
import com.intellij.lang.LangBundle;
import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
......@@ -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
public AutoCompletionDecision handleAutoCompletionPossibility(@NotNull AutoCompletionContext context) {
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