mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
PY-75580 Experiment with extended completion
GitOrigin-RevId: 8aeb4c123eb6c8eae3255c974d8630a0745df395
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b56e64f92d
commit
63487fda41
@@ -147,7 +147,7 @@
|
||||
<completion.contributor language="Python"
|
||||
implementationClass="com.jetbrains.python.codeInsight.completion.PyStringFormatCompletionContributor" />
|
||||
|
||||
<completion.contributor language="Python" order="last"
|
||||
<completion.contributor language="Python" order="first"
|
||||
implementationClass="com.jetbrains.python.codeInsight.completion.PyClassNameCompletionContributor"/>
|
||||
<completion.contributor language="Python" order="last"
|
||||
implementationClass="com.jetbrains.python.codeInsight.completion.PyModulePackageCompletionContributor"/>
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.jetbrains.python.codeInsight.completion;
|
||||
|
||||
import com.intellij.codeInsight.completion.CompletionParameters;
|
||||
import com.intellij.codeInsight.completion.CompletionResultSet;
|
||||
import com.intellij.codeInsight.completion.InsertHandler;
|
||||
import com.intellij.codeInsight.completion.PrioritizedLookupElement;
|
||||
import com.intellij.codeInsight.completion.*;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.codeInsight.lookup.LookupElementPresentation;
|
||||
@@ -65,12 +62,27 @@ public final class PyClassNameCompletionContributor extends PyImportableNameComp
|
||||
@Override
|
||||
protected void doFillCompletionVariants(@NotNull CompletionParameters parameters, @NotNull CompletionResultSet result) {
|
||||
result.restartCompletionWhenNothingMatches();
|
||||
var results = result.runRemainingContributors(parameters, true);
|
||||
if (results.isEmpty() || parameters.isExtendedCompletion()) {
|
||||
var remainingResults = result.runRemainingContributors(parameters, true);
|
||||
|
||||
for (var completionResult : remainingResults) {
|
||||
result.passResult(completionResult);
|
||||
}
|
||||
|
||||
if (parameters.isExtendedCompletion() || remainingResults.isEmpty() || containsOnlyElementUnderTheCaret(remainingResults, parameters)) {
|
||||
fillCompletionVariantsImpl(parameters, result);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean containsOnlyElementUnderTheCaret(@NotNull Set<CompletionResult> remainingResults,
|
||||
@NotNull CompletionParameters parameters) {
|
||||
PsiElement position = parameters.getOriginalPosition();
|
||||
if (remainingResults.size() == 1 && position != null) {
|
||||
var lookup = remainingResults.iterator().next();
|
||||
return lookup.getLookupElement().getLookupString().equals(position.getText());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void fillCompletionVariantsImpl(@NotNull CompletionParameters parameters, @NotNull CompletionResultSet result) {
|
||||
boolean isExtendedCompletion = parameters.isExtendedCompletion();
|
||||
if (!PyCodeInsightSettings.getInstance().INCLUDE_IMPORTABLE_NAMES_IN_BASIC_COMPLETION && !isExtendedCompletion) {
|
||||
|
||||
Reference in New Issue
Block a user