mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-06 06:21:16 +07:00
IDEA-69576 Completion: Improve options list on variable rename
This commit is contained in:
+20
-8
@@ -29,11 +29,14 @@ import com.intellij.psi.codeStyle.VariableKind;
|
||||
import com.intellij.psi.util.PropertyUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.refactoring.introduceField.InplaceIntroduceFieldPopup;
|
||||
import com.intellij.refactoring.introduceVariable.IntroduceVariableBase;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ProcessingContext;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
@@ -76,7 +79,7 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
|
||||
new CompletionProvider<CompletionParameters>() {
|
||||
public void addCompletions(@NotNull final CompletionParameters parameters, final ProcessingContext matchingContext, @NotNull final CompletionResultSet result) {
|
||||
final Set<LookupElement> lookupSet = new THashSet<LookupElement>();
|
||||
final PsiVariable variable = (PsiVariable)parameters.getPosition().getParent();
|
||||
final PsiField variable = (PsiField)parameters.getPosition().getParent();
|
||||
completeFieldName(lookupSet, variable, result.getPrefixMatcher(), parameters.getInvocationCount() >= 1);
|
||||
completeMethodName(lookupSet, variable, result.getPrefixMatcher());
|
||||
for (final LookupElement item : lookupSet) {
|
||||
@@ -133,6 +136,12 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
|
||||
PsiElement parent = PsiTreeUtil.getParentOfType(var, PsiCodeBlock.class);
|
||||
if(parent == null) parent = PsiTreeUtil.getParentOfType(var, PsiMethod.class);
|
||||
tunePreferencePolicy(LookupItemUtil.addLookupItems(set, getUnresolvedReferences(parent, false), matcher), suggestedNameInfo);
|
||||
|
||||
PsiExpression initializer = var.getInitializer();
|
||||
if (initializer != null) {
|
||||
SuggestedNameInfo initializerSuggestions = IntroduceVariableBase.getSuggestedName(type, initializer);
|
||||
tunePreferencePolicy(LookupItemUtil.addLookupItems(set, initializerSuggestions.names, matcher), initializerSuggestions);
|
||||
}
|
||||
}
|
||||
|
||||
private static void tunePreferencePolicy(final List<LookupElement> list, final SuggestedNameInfo suggestedNameInfo) {
|
||||
@@ -218,7 +227,7 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
|
||||
return ArrayUtil.toStringArray(unresolvedRefs);
|
||||
}
|
||||
|
||||
private static void completeFieldName(Set<LookupElement> set, PsiVariable var, final PrefixMatcher matcher, boolean includeOverlapped) {
|
||||
private static void completeFieldName(Set<LookupElement> set, PsiField var, final PrefixMatcher matcher, boolean includeOverlapped) {
|
||||
FeatureUsageTracker.getInstance().triggerFeatureUsed("editing.completion.variable.name");
|
||||
|
||||
JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(var.getProject());
|
||||
@@ -252,6 +261,14 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
|
||||
}
|
||||
|
||||
tunePreferencePolicy(LookupItemUtil.addLookupItems(set, getUnresolvedReferences(var.getParent(), false), matcher), suggestedNameInfo);
|
||||
|
||||
PsiExpression initializer = var.getInitializer();
|
||||
PsiClass containingClass = var.getContainingClass();
|
||||
if (initializer != null && containingClass != null) {
|
||||
SuggestedNameInfo initializerSuggestions = InplaceIntroduceFieldPopup.
|
||||
suggestFieldName(var.getType(), null, initializer, var.hasModifierProperty(PsiModifier.STATIC), containingClass);
|
||||
tunePreferencePolicy(LookupItemUtil.addLookupItems(set, initializerSuggestions.names, matcher), initializerSuggestions);
|
||||
}
|
||||
}
|
||||
|
||||
public static void completeVariableNameForRefactoring(Project project,
|
||||
@@ -268,7 +285,7 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
|
||||
|
||||
public static String[] completeVariableNameForRefactoring(JavaCodeStyleManager codeStyleManager,
|
||||
final PrefixMatcher matcher,
|
||||
final PsiType varType,
|
||||
@Nullable final PsiType varType,
|
||||
final VariableKind varKind,
|
||||
SuggestedNameInfo suggestedNameInfo,
|
||||
final boolean includeOverlapped, final boolean methodPrefix) {
|
||||
@@ -297,11 +314,6 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
|
||||
return ArrayUtil.toStringArray(result);
|
||||
}
|
||||
|
||||
private static boolean isMethodPrefix(String prefix) {
|
||||
return prefix.startsWith(JavaCompletionUtil.IS_PREFIX) || prefix.startsWith(JavaCompletionUtil.GET_PREFIX) || prefix.startsWith(
|
||||
JavaCompletionUtil.SET_PREFIX);
|
||||
}
|
||||
|
||||
private static void completeMethodName(Set<LookupElement> set, PsiElement element, final PrefixMatcher matcher){
|
||||
if(element instanceof PsiMethod) {
|
||||
final PsiMethod method = (PsiMethod)element;
|
||||
|
||||
Reference in New Issue
Block a user