From 94d97100dcdcfb8553188678091a05bcc4808748 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Mon, 14 Sep 2015 21:22:02 +0200 Subject: [PATCH 01/22] Remove __author__ from python file templates. --- python/resources/fileTemplates/internal/Python Unit Test.py.ft | 1 - 1 file changed, 1 deletion(-) diff --git a/python/resources/fileTemplates/internal/Python Unit Test.py.ft b/python/resources/fileTemplates/internal/Python Unit Test.py.ft index 1b20ae4f1c00..432d1ea17ee0 100644 --- a/python/resources/fileTemplates/internal/Python Unit Test.py.ft +++ b/python/resources/fileTemplates/internal/Python Unit Test.py.ft @@ -1,4 +1,3 @@ - import unittest class MyTestCase(unittest.TestCase): From fe1a23555a37268b67e22d418698eedb4da82d2c Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Mon, 14 Sep 2015 22:26:07 +0200 Subject: [PATCH 02/22] Remote interpreter: fix searching for Vagrant folder. --- .../platform-impl/src/com/intellij/remote/VagrantSupport.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/remote/VagrantSupport.java b/platform/platform-impl/src/com/intellij/remote/VagrantSupport.java index 580509183d56..d941d4e154be 100644 --- a/platform/platform-impl/src/com/intellij/remote/VagrantSupport.java +++ b/platform/platform-impl/src/com/intellij/remote/VagrantSupport.java @@ -67,6 +67,9 @@ public abstract class VagrantSupport { return t.getMessage().contains("not yet ready for SSH"); } + @Nullable + public abstract String findVagrantFolder(@NotNull Project project); + public static class MultipleMachinesException extends Exception {} } From f609df5f9781d7d05b7459575b665b86156d4bb2 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Tue, 15 Sep 2015 01:06:33 +0200 Subject: [PATCH 03/22] Don't setup sdk if it is not found in sdk table (PY-16827). --- .../com/jetbrains/python/sdk/PySdkUpdater.java | 5 +++-- .../jetbrains/python/sdk/PythonSdkType.java | 18 +++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/python/src/com/jetbrains/python/sdk/PySdkUpdater.java b/python/src/com/jetbrains/python/sdk/PySdkUpdater.java index ae0985d973b0..01728cd0b306 100644 --- a/python/src/com/jetbrains/python/sdk/PySdkUpdater.java +++ b/python/src/com/jetbrains/python/sdk/PySdkUpdater.java @@ -18,7 +18,6 @@ package com.jetbrains.python.sdk; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.SdkModificator; -import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl; import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; @@ -90,7 +89,7 @@ public abstract class PySdkUpdater { return sdk; } else { - return new ProjectJdkImpl(getHomePath(), PythonSdkType.getInstance()); + throw new PySdkNotFoundException(); } } @@ -143,4 +142,6 @@ public abstract class PySdkUpdater { public interface SdkModificationProcessor { void process(@NotNull Sdk sdk, @NotNull SdkModificator sdkModificator); } + + public class PySdkNotFoundException extends RuntimeException {} } diff --git a/python/src/com/jetbrains/python/sdk/PythonSdkType.java b/python/src/com/jetbrains/python/sdk/PythonSdkType.java index 77a9f0e2ae25..67e7326ad809 100644 --- a/python/src/com/jetbrains/python/sdk/PythonSdkType.java +++ b/python/src/com/jetbrains/python/sdk/PythonSdkType.java @@ -530,14 +530,18 @@ public class PythonSdkType extends SdkType { ApplicationManager.getApplication().invokeLater(new Runnable() { @Override public void run() { - final boolean success = doSetupSdkPaths(project, ownerComponent, PySdkUpdater.fromSdkPath(sdk.getHomePath())); + try { + final boolean success = doSetupSdkPaths(project, ownerComponent, PySdkUpdater.fromSdkPath(sdk.getHomePath())); - if (!success) { - Messages.showErrorDialog( - project, - PyBundle.message("MSG.cant.setup.sdk.$0", FileUtil.toSystemDependentName(sdk.getSdkModificator().getHomePath())), - PyBundle.message("MSG.title.bad.sdk") - ); + if (!success) { + Messages.showErrorDialog( + project, + PyBundle.message("MSG.cant.setup.sdk.$0", FileUtil.toSystemDependentName(sdk.getSdkModificator().getHomePath())), + PyBundle.message("MSG.title.bad.sdk") + ); + } + } catch (PySdkUpdater.PySdkNotFoundException e) { + // sdk was removed from sdk table so no need to setup paths } } }, ModalityState.NON_MODAL); From 157a88cde4747b82155390880a90a5d25fc42705 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 15 Sep 2015 18:52:02 +0200 Subject: [PATCH 04/22] move FORCE_SHOW_SIGNATURE_ATTR key to JavaCompletionUtil from LookupItem, as it's java-specific --- .../intellij/codeInsight/completion/JavaCompletionUtil.java | 1 + .../codeInsight/completion/JavaDocCompletionContributor.java | 2 +- .../intellij/codeInsight/completion/JavaMethodCallElement.java | 2 +- .../codeInsight/completion/JavaMethodMergingContributor.java | 3 +-- .../src/com/intellij/codeInsight/lookup/LookupItem.java | 1 - .../groovy/lang/completion/GrMethodMergingContributor.java | 3 +-- 6 files changed, 5 insertions(+), 7 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index d7968fa6b95d..253e65241e08 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -63,6 +63,7 @@ import static com.intellij.codeInsight.completion.ReferenceExpressionCompletionC import static com.intellij.patterns.PlatformPatterns.psiElement; public class JavaCompletionUtil { + public static final Key FORCE_SHOW_SIGNATURE_ATTR = Key.create("forceShowSignature"); private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.completion.JavaCompletionUtil"); public static final Key> DYNAMIC_TYPE_EVALUATOR = Key.create("DYNAMIC_TYPE_EVALUATOR"); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java index 9698aa389779..e19b7f2f2dbe 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java @@ -98,7 +98,7 @@ public class JavaDocCompletionContributor extends CompletionContributor { JavaConstantExpressionEvaluator.computeConstantExpression(field.getInitializer(), false) != null)) continue; } - item.putUserData(LookupItem.FORCE_SHOW_SIGNATURE_ATTR, Boolean.TRUE); + item.putUserData(JavaCompletionUtil.FORCE_SHOW_SIGNATURE_ATTR, Boolean.TRUE); if (isArg) { item = AutoCompletionPolicy.NEVER_AUTOCOMPLETE.applyPolicy(item); } diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java index cf74e132c3fd..9ca6c2680015 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java @@ -128,7 +128,7 @@ public class JavaMethodCallElement extends LookupItem implements Type final PsiMethod method = getObject(); final LookupElement[] allItems = context.getElements(); - final boolean overloadsMatter = allItems.length == 1 && getUserData(FORCE_SHOW_SIGNATURE_ATTR) == null; + final boolean overloadsMatter = allItems.length == 1 && getUserData(JavaCompletionUtil.FORCE_SHOW_SIGNATURE_ATTR) == null; final boolean hasParams = MethodParenthesesHandler.hasParams(this, allItems, overloadsMatter, method); JavaCompletionUtil.insertParentheses(context, this, overloadsMatter, hasParams); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodMergingContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodMergingContributor.java index 29fd7ee5c09f..c9e8ae1f78db 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodMergingContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodMergingContributor.java @@ -16,7 +16,6 @@ package com.intellij.codeInsight.completion; import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupItem; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiType; import org.jetbrains.annotations.NotNull; @@ -44,7 +43,7 @@ public class JavaMethodMergingContributor extends CompletionContributor { final ArrayList allMethods = new ArrayList(); for (LookupElement item : items) { Object o = item.getPsiElement(); - if (item.getUserData(LookupItem.FORCE_SHOW_SIGNATURE_ATTR) != null || !(o instanceof PsiMethod)) { + if (item.getUserData(JavaCompletionUtil.FORCE_SHOW_SIGNATURE_ATTR) != null || !(o instanceof PsiMethod)) { return AutoCompletionDecision.SHOW_LOOKUP; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupItem.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupItem.java index 052d06997679..589eb35b2464 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupItem.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupItem.java @@ -48,7 +48,6 @@ public class LookupItem extends MutableLookupElement implements Comparable public static final Object TYPE_TEXT_ATTR = Key.create("typeText"); public static final Object TAIL_TEXT_ATTR = Key.create("tailText"); public static final Object TAIL_TEXT_SMALL_ATTR = Key.create("tailTextSmall"); - public static final Key FORCE_SHOW_SIGNATURE_ATTR = Key.create("forceShowSignature"); public static final Object FORCE_QUALIFY = Key.create("FORCE_QUALIFY"); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GrMethodMergingContributor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GrMethodMergingContributor.java index 365d88573313..394956f4b62b 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GrMethodMergingContributor.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GrMethodMergingContributor.java @@ -17,7 +17,6 @@ package org.jetbrains.plugins.groovy.lang.completion; import com.intellij.codeInsight.completion.*; import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupItem; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiParameter; import com.intellij.psi.PsiType; @@ -48,7 +47,7 @@ public class GrMethodMergingContributor extends CompletionContributor { final ArrayList allMethods = new ArrayList(); for (LookupElement item : items) { Object o = item.getPsiElement(); - if (item.getUserData(LookupItem.FORCE_SHOW_SIGNATURE_ATTR) != null || !(o instanceof PsiMethod)) { + if (item.getUserData(JavaCompletionUtil.FORCE_SHOW_SIGNATURE_ATTR) != null || !(o instanceof PsiMethod)) { return AutoCompletionDecision.SHOW_LOOKUP; } From 0094593710b00f9cd4ca9327fd4a99f4ed4c2a4e Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 15 Sep 2015 19:31:21 +0200 Subject: [PATCH 05/22] cleanup LookupItemUtil --- .../codeInsight/lookup/LookupItemUtil.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/lookup/LookupItemUtil.java b/java/java-impl/src/com/intellij/codeInsight/lookup/LookupItemUtil.java index aaa1bb896a3c..97714e962350 100644 --- a/java/java-impl/src/com/intellij/codeInsight/lookup/LookupItemUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/lookup/LookupItemUtil.java @@ -18,8 +18,6 @@ package com.intellij.codeInsight.lookup; import com.intellij.codeInsight.TailType; import com.intellij.codeInsight.completion.JavaClassNameCompletionContributor; import com.intellij.codeInsight.completion.JavaMethodCallElement; -import com.intellij.codeInsight.completion.PrefixMatcher; -import com.intellij.codeInsight.completion.impl.CamelHumpMatcher; import com.intellij.codeInsight.template.Template; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.*; @@ -40,13 +38,11 @@ import java.util.Collection; public class LookupItemUtil{ private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.lookup.LookupItemUtil"); + /** + * @deprecated to remove in IDEA 16 + */ @Nullable public static LookupElement addLookupItem(Collection set, @NotNull Object object) { - return addLookupItem(set, object, new CamelHumpMatcher("")); - } - - @Nullable - public static LookupElement addLookupItem(Collection set, @NotNull Object object, PrefixMatcher matcher) { if (object instanceof PsiType) { PsiType psiType = (PsiType)object; for (final LookupElement lookupItem : set) { @@ -61,10 +57,7 @@ public class LookupItemUtil{ if(lookupItem.getObject().equals(lookupItem)) return null; } LookupElement item = objectToLookupItem(object); - if (matcher.prefixMatches(item)) { - return set.add(item) ? item : null; - } - return null; + return set.add(item) ? item : null; } /** From 881928ae0cc32e1573117ff70bc1f0ecaebeba18 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 15 Sep 2015 19:38:30 +0200 Subject: [PATCH 06/22] store TemplateLookupSelectionHandler in user data instead of LookupItem attribute --- .../codeInsight/template/impl/JavaTemplateUtil.java | 12 ++++-------- .../impl/TemplateExpressionLookupElement.java | 4 +--- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/template/impl/JavaTemplateUtil.java b/java/java-impl/src/com/intellij/codeInsight/template/impl/JavaTemplateUtil.java index b93b364a6366..5600ce4623af 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/impl/JavaTemplateUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/impl/JavaTemplateUtil.java @@ -16,7 +16,6 @@ package com.intellij.codeInsight.template.impl; import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupItem; import com.intellij.codeInsight.lookup.LookupItemUtil; import com.intellij.codeInsight.lookup.PsiTypeLookupItem; import com.intellij.codeInsight.template.TemplateLookupSelectionHandler; @@ -156,19 +155,16 @@ public class JavaTemplateUtil { } public static LookupElement addElementLookupItem(Set items, PsiElement element) { - final LookupElement item = LookupItemUtil.addLookupItem(items, element); - if (item instanceof LookupItem) { - ((LookupItem)item).setAttribute(TemplateLookupSelectionHandler.KEY_IN_LOOKUP_ITEM, new JavaTemplateLookupSelectionHandler()); - } + final LookupElement item = LookupItemUtil.objectToLookupItem(element); + items.add(item); + item.putUserData(TemplateLookupSelectionHandler.KEY_IN_LOOKUP_ITEM, new JavaTemplateLookupSelectionHandler()); return item; } public static LookupElement addTypeLookupItem(Set items, PsiType type) { final LookupElement item = PsiTypeLookupItem.createLookupItem(type, null); items.add(item); - if (item instanceof LookupItem) { - ((LookupItem)item).setAttribute(TemplateLookupSelectionHandler.KEY_IN_LOOKUP_ITEM, new JavaTemplateLookupSelectionHandler()); - } + item.putUserData(TemplateLookupSelectionHandler.KEY_IN_LOOKUP_ITEM, new JavaTemplateLookupSelectionHandler()); return item; } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateExpressionLookupElement.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateExpressionLookupElement.java index dd53e5aab241..11bb58a53f43 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateExpressionLookupElement.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateExpressionLookupElement.java @@ -22,7 +22,6 @@ import com.intellij.codeInsight.completion.OffsetMap; import com.intellij.codeInsight.completion.PrioritizedLookupElement; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementDecorator; -import com.intellij.codeInsight.lookup.LookupItem; import com.intellij.codeInsight.template.TemplateLookupSelectionHandler; import com.intellij.openapi.application.Result; import com.intellij.openapi.command.WriteCommandAction; @@ -81,8 +80,7 @@ class TemplateExpressionLookupElement extends LookupElementDecorator)item).getAttribute(TemplateLookupSelectionHandler.KEY_IN_LOOKUP_ITEM) : null; + final TemplateLookupSelectionHandler handler = item.getUserData(TemplateLookupSelectionHandler.KEY_IN_LOOKUP_ITEM); if (handler != null && range != null) { handler.itemSelected(item, context.getFile(), context.getDocument(), range.getStartOffset(), range.getEndOffset()); } From 2abc8658536dd6eda703de4919f00e29e8f7f277 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 15 Sep 2015 19:54:55 +0200 Subject: [PATCH 07/22] remove obvious LookupItem usages and cleanup around --- .../completion/JavaCompletionUtil.java | 2 +- .../JavaDocCompletionContributor.java | 33 ++++++++++--------- .../JavaPsiClassReferenceElement.java | 8 ++--- .../JavaSmartCompletionContributor.java | 2 +- .../impl/JavaElementLookupRenderer.java | 30 ++++++----------- .../macro/SuggestVariableNameMacro.java | 7 ++-- .../lang/completion/GroovyCompletionUtil.java | 3 +- .../GroovySmartCompletionContributor.java | 7 ++-- .../handlers/AfterNewClassInsertHandler.java | 9 ++--- 9 files changed, 42 insertions(+), 59 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index 253e65241e08..7f39de64c579 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -103,7 +103,7 @@ public class JavaCompletionUtil { private static final Key>> ALL_METHODS_ATTRIBUTE = Key.create("allMethods"); - public static PsiType getQualifierType(LookupItem item) { + public static PsiType getQualifierType(LookupElement item) { return item.getUserData(QUALIFIER_TYPE_ATTR); } diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java index e19b7f2f2dbe..5c8e7056d372 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java @@ -22,8 +22,9 @@ import com.intellij.codeInsight.editorActions.wordSelection.DocTagSelectioner; import com.intellij.codeInsight.javadoc.JavaDocUtil; import com.intellij.codeInsight.lookup.*; import com.intellij.codeInspection.InspectionProfile; -import com.intellij.codeInspection.SuppressionUtil; +import com.intellij.codeInspection.SuppressionUtilCore; import com.intellij.codeInspection.javaDoc.JavaDocLocalInspection; +import com.intellij.codeInspection.javaDoc.JavaDocLocalInspectionBase; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.*; import com.intellij.openapi.project.Project; @@ -228,7 +229,7 @@ public class JavaDocCompletionContributor extends CompletionContributor { for (JavadocTagInfo info : JavadocManager.SERVICE.getInstance(position.getProject()).getTagInfos(parent)) { String tagName = info.getName(); - if (tagName.equals(SuppressionUtil.SUPPRESS_INSPECTIONS_TAG_NAME)) continue; + if (tagName.equals(SuppressionUtilCore.SUPPRESS_INSPECTIONS_TAG_NAME)) continue; if (isInline != info.isInline()) continue; ret.add(tagName); addSpecialTags(ret, comment, tagName); @@ -237,7 +238,7 @@ public class JavaDocCompletionContributor extends CompletionContributor { InspectionProfile inspectionProfile = InspectionProjectProfileManager.getInstance(position.getProject()).getInspectionProfile(); JavaDocLocalInspection inspection = - (JavaDocLocalInspection)inspectionProfile.getUnwrappedTool(JavaDocLocalInspection.SHORT_NAME, position); + (JavaDocLocalInspection)inspectionProfile.getUnwrappedTool(JavaDocLocalInspectionBase.SHORT_NAME, position); if (inspection != null) { final StringTokenizer tokenizer = new StringTokenizer(inspection.myAdditionalJavadocTags, ", "); while (tokenizer.hasMoreTokens()) { @@ -265,7 +266,7 @@ public class JavaDocCompletionContributor extends CompletionContributor { if (psiMethod != null) { PsiDocTag[] tags = comment.getTags(); for (PsiParameter param : psiMethod.getParameterList().getParameters()) { - if (!JavaDocLocalInspection.isFound(tags, param)) { + if (!JavaDocLocalInspectionBase.isFound(tags, param)) { result.add(tagName + " " + param.getName()); } } @@ -302,6 +303,7 @@ public class JavaDocCompletionContributor extends CompletionContributor { final int offset = caretModel.getOffset(); final PsiElement element = context.getFile().findElementAt(offset - 1); PsiDocTag tag = PsiTreeUtil.getParentOfType(element, PsiDocTag.class); + assert tag != null; for (PsiElement child = tag.getFirstChild(); child != null; child = child.getNextSibling()) { if (child instanceof PsiDocToken) { @@ -334,18 +336,15 @@ public class JavaDocCompletionContributor extends CompletionContributor { } } - private static class MethodSignatureInsertHandler implements InsertHandler { + private static class MethodSignatureInsertHandler implements InsertHandler { @Override - public void handleInsert(InsertionContext context, LookupItem item) { - if (!(item.getObject() instanceof PsiMethod)) { - return; - } + public void handleInsert(InsertionContext context, JavaMethodCallElement item) { PsiDocumentManager.getInstance(context.getProject()).commitDocument(context.getEditor().getDocument()); final Editor editor = context.getEditor(); - final PsiMethod method = (PsiMethod)item.getObject(); + final PsiMethod method = item.getObject(); final PsiParameter[] parameters = method.getParameterList().getParameters(); - final StringBuffer buffer = new StringBuffer(); + final StringBuilder buffer = new StringBuilder(); final CharSequence chars = editor.getDocument().getCharsSequence(); int endOffset = editor.getCaretModel().getOffset(); @@ -354,18 +353,20 @@ public class JavaDocCompletionContributor extends CompletionContributor { int signatureOffset = afterSharp; PsiElement element = context.getFile().findElementAt(signatureOffset - 1); - final CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(element.getProject()); + final CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(context.getProject()); PsiDocTag tag = PsiTreeUtil.getParentOfType(element, PsiDocTag.class); - if (context.getCompletionChar() == Lookup.REPLACE_SELECT_CHAR) { + if (context.getCompletionChar() == Lookup.REPLACE_SELECT_CHAR && tag != null) { final PsiDocTagValue valueElement = tag.getValueElement(); - endOffset = valueElement.getTextRange().getEndOffset(); - context.setTailOffset(endOffset); + if (valueElement != null) { + endOffset = valueElement.getTextRange().getEndOffset(); + context.setTailOffset(endOffset); + } } editor.getDocument().deleteString(afterSharp, endOffset); editor.getCaretModel().moveToOffset(signatureOffset); editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); editor.getSelectionModel().removeSelection(); - buffer.append(method.getName() + "("); + buffer.append(method.getName()).append("("); final int afterParenth = afterSharp + buffer.length(); for (int i = 0; i < parameters.length; i++) { final PsiType type = TypeConversionUtil.erasure(parameters[i].getType()); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaPsiClassReferenceElement.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaPsiClassReferenceElement.java index e04e5ed35df3..2713ca52a1ea 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaPsiClassReferenceElement.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaPsiClassReferenceElement.java @@ -155,12 +155,10 @@ public class JavaPsiClassReferenceElement extends LookupItem implements @Override public void renderElement(LookupElementPresentation presentation) { - LookupItem item = this; - PsiClass psiClass = getObject(); - renderClassItem(presentation, item, psiClass, false, " (" + myPackageDisplayName + ")", mySubstitutor); + renderClassItem(presentation, this, getObject(), false, " (" + myPackageDisplayName + ")", mySubstitutor); } - public static void renderClassItem(LookupElementPresentation presentation, LookupItem item, PsiClass psiClass, boolean diamond, + public static void renderClassItem(LookupElementPresentation presentation, LookupElement item, PsiClass psiClass, boolean diamond, @NotNull String locationString, @NotNull PsiSubstitutor substitutor) { if (!(psiClass instanceof PsiTypeParameter)) { presentation.setIcon(DefaultLookupItemRenderer.getRawIcon(item, presentation.isReal())); @@ -194,7 +192,7 @@ public class JavaPsiClassReferenceElement extends LookupItem implements return " (" + myPackageDisplayName + ")"; } - private static String getName(final PsiClass psiClass, final LookupItem item, boolean diamond, @NotNull PsiSubstitutor substitutor) { + private static String getName(final PsiClass psiClass, final LookupElement item, boolean diamond, @NotNull PsiSubstitutor substitutor) { if (item instanceof JavaPsiClassReferenceElement) { String forced = ((JavaPsiClassReferenceElement)item).getForcedPresentableName(); if (forced != null) { diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaSmartCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaSmartCompletionContributor.java index 11384bdeeb05..6a6d14d08d4c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaSmartCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaSmartCompletionContributor.java @@ -342,7 +342,7 @@ public class JavaSmartCompletionContributor extends CompletionContributor { } @NotNull - private TailTypeDecorator createCatchTypeVariant(PsiCodeBlock tryBlock, PsiClassType type) { + private LookupElement createCatchTypeVariant(PsiCodeBlock tryBlock, PsiClassType type) { return TailTypeDecorator.withTail(PsiTypeLookupItem.createLookupItem(type, tryBlock).setInsertHandler(new DefaultInsertHandler()), TailType.HUMBLE_SPACE_BEFORE_WORD); } diff --git a/java/java-impl/src/com/intellij/codeInsight/lookup/impl/JavaElementLookupRenderer.java b/java/java-impl/src/com/intellij/codeInsight/lookup/impl/JavaElementLookupRenderer.java index 3aaa20ae8239..ee8ba571a9c7 100644 --- a/java/java-impl/src/com/intellij/codeInsight/lookup/impl/JavaElementLookupRenderer.java +++ b/java/java-impl/src/com/intellij/codeInsight/lookup/impl/JavaElementLookupRenderer.java @@ -17,9 +17,13 @@ package com.intellij.codeInsight.lookup.impl; import com.intellij.codeInsight.completion.JavaCompletionUtil; import com.intellij.codeInsight.lookup.DefaultLookupItemRenderer; +import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementPresentation; import com.intellij.codeInsight.lookup.LookupItem; -import com.intellij.psi.*; +import com.intellij.psi.PsiDocCommentOwner; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiMethod; +import com.intellij.psi.PsiType; import com.intellij.psi.impl.beanProperties.BeanPropertyElement; import com.intellij.psi.util.PsiUtilCore; import org.jetbrains.annotations.Nullable; @@ -44,19 +48,11 @@ public class JavaElementLookupRenderer implements ElementLookupRenderer { presentation.setTailText((String)item.getAttribute(LookupItem.TAIL_TEXT_ATTR), item.getAttribute(LookupItem.TAIL_TEXT_SMALL_ATTR) != null); - presentation.setTypeText(getTypeText(item, ((BeanPropertyElement)element).getPropertyType())); + PsiType type = ((BeanPropertyElement)element).getPropertyType(); + presentation.setTypeText(type == null ? null : type.getPresentableText()); } - @Nullable - private static String getTypeText(LookupItem item, @Nullable PsiType returnType) { - if (returnType == null) { - return null; - } - - return returnType.getPresentableText(); - } - - public static boolean isToStrikeout(LookupItem item) { + public static boolean isToStrikeout(LookupElement item) { final List allMethods = JavaCompletionUtil.getAllMethods(item); if (allMethods != null){ for (PsiMethod method : allMethods) { @@ -69,16 +65,10 @@ public class JavaElementLookupRenderer implements ElementLookupRenderer { } return true; } - else if (item.getObject() instanceof PsiElement) { - final PsiElement element = (PsiElement)item.getObject(); - if (element.isValid()) { - return isDeprecated(element); - } - } - return false; + return isDeprecated(item.getPsiElement()); } - private static boolean isDeprecated(PsiElement element) { + private static boolean isDeprecated(@Nullable PsiElement element) { return element instanceof PsiDocCommentOwner && ((PsiDocCommentOwner)element).isDeprecated(); } } diff --git a/java/java-impl/src/com/intellij/codeInsight/template/macro/SuggestVariableNameMacro.java b/java/java-impl/src/com/intellij/codeInsight/template/macro/SuggestVariableNameMacro.java index 22029d8a3ad5..26ab784bd3b0 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/macro/SuggestVariableNameMacro.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/macro/SuggestVariableNameMacro.java @@ -17,7 +17,7 @@ package com.intellij.codeInsight.template.macro; import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupItem; +import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.codeInsight.template.*; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; @@ -65,10 +65,9 @@ public class SuggestVariableNameMacro extends Macro { public LookupElement[] calculateLookupItems(@NotNull Expression[] params, final ExpressionContext context) { String[] names = getNames(context); if (names == null || names.length < 2) return null; - LookupItem[] items = new LookupItem[names.length]; + LookupElement[] items = new LookupElement[names.length]; for(int i = 0; i < names.length; i++) { - String name = names[i]; - items[i] = LookupItem.fromString(name); + items[i] = LookupElementBuilder.create(names[i]); } return items; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyCompletionUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyCompletionUtil.java index 0c32878b5853..40b7ae0d1537 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyCompletionUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyCompletionUtil.java @@ -22,7 +22,6 @@ import com.intellij.codeInsight.completion.*; import com.intellij.codeInsight.completion.originInfo.OriginInfoProvider; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; -import com.intellij.codeInsight.lookup.LookupItem; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.RangeMarker; @@ -450,7 +449,7 @@ public class GroovyCompletionUtil { return !hasAccessibleConstructors && (hasParameters || hasSetters); } - public static void addImportForItem(PsiFile file, int startOffset, LookupItem item) throws IncorrectOperationException { + public static void addImportForItem(PsiFile file, int startOffset, LookupElement item) throws IncorrectOperationException { PsiDocumentManager.getInstance(file.getProject()).commitAllDocuments(); Object o = item.getObject(); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovySmartCompletionContributor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovySmartCompletionContributor.java index dd8262ba350e..68f4d515c4ea 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovySmartCompletionContributor.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovySmartCompletionContributor.java @@ -18,7 +18,6 @@ package org.jetbrains.plugins.groovy.lang.completion; import com.intellij.codeInsight.TailType; import com.intellij.codeInsight.completion.*; import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupItem; import com.intellij.codeInsight.lookup.PsiTypeLookupItem; import com.intellij.featureStatistics.FeatureUsageTracker; import com.intellij.openapi.editor.Document; @@ -185,7 +184,7 @@ public class GroovySmartCompletionContributor extends CompletionContributor { editor.getCaretModel().moveToOffset(context.getTailOffset()); editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); - GroovyCompletionUtil.addImportForItem(context.getFile(), context.getStartOffset(), ((LookupItem)item)); + GroovyCompletionUtil.addImportForItem(context.getFile(), context.getStartOffset(), item); } }); result.addElement(item); @@ -293,9 +292,9 @@ public class GroovySmartCompletionContributor extends CompletionContributor { final PsiType _type = GenericsUtil.eliminateWildcards(type); final PsiTypeLookupItem item = PsiTypeLookupItem.createLookupItem(_type, place, PsiTypeLookupItem.isDiamond(_type), ChooseTypeExpression.IMPORT_FIXER).setShowPackage(); if (item.getObject() instanceof PsiClass) { - item.setInsertHandler(new InsertHandler() { + item.setInsertHandler(new InsertHandler() { @Override - public void handleInsert(InsertionContext context, LookupItem item) { + public void handleInsert(InsertionContext context, LookupElement item) { GroovyCompletionUtil.addImportForItem(context.getFile(), context.getStartOffset(), item); } }); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/handlers/AfterNewClassInsertHandler.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/handlers/AfterNewClassInsertHandler.java index 76bb684cafd3..e873f9631acb 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/handlers/AfterNewClassInsertHandler.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/handlers/AfterNewClassInsertHandler.java @@ -22,9 +22,8 @@ import com.intellij.codeInsight.completion.InsertHandler; import com.intellij.codeInsight.completion.InsertionContext; import com.intellij.codeInsight.completion.JavaCompletionFeatures; import com.intellij.codeInsight.completion.util.ParenthesesInsertHandler; -import com.intellij.codeInsight.lookup.LookupItem; +import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.featureStatistics.FeatureUsageTracker; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; @@ -36,9 +35,7 @@ import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement; /** * @author Maxim.Medvedev */ -public class AfterNewClassInsertHandler implements InsertHandler> { - private static final Logger LOG = Logger.getInstance(AfterNewClassInsertHandler.class); - +public class AfterNewClassInsertHandler implements InsertHandler { private final PsiClassType myClassType; private final boolean myTriggerFeature; @@ -48,7 +45,7 @@ public class AfterNewClassInsertHandler implements InsertHandler item) { + public void handleInsert(final InsertionContext context, LookupElement item) { final PsiClassType.ClassResolveResult resolveResult = myClassType.resolveGenerics(); final PsiClass psiClass = resolveResult.getElement(); if (psiClass == null || !psiClass.isValid()) { From ae6de003357413e7d1126da716a329389b2c6754 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Tue, 15 Sep 2015 13:00:52 +0300 Subject: [PATCH 08/22] some color-blindness fixes in the default color scheme --- .../platform-resources/src/DefaultColorSchemesManager.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/platform/platform-resources/src/DefaultColorSchemesManager.xml b/platform/platform-resources/src/DefaultColorSchemesManager.xml index ac6de50f1edd..ef951fb8c4d7 100644 --- a/platform/platform-resources/src/DefaultColorSchemesManager.xml +++ b/platform/platform-resources/src/DefaultColorSchemesManager.xml @@ -275,7 +275,7 @@ @@ -284,7 +284,7 @@ @@ -812,8 +812,8 @@ From b13b10fd4762d8e7fb05e102ef5e3337b4010bee Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Tue, 15 Sep 2015 20:56:21 +0300 Subject: [PATCH 09/22] rollback changes for caret row in the default color scheme --- platform/platform-resources/src/DefaultColorSchemesManager.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/platform-resources/src/DefaultColorSchemesManager.xml b/platform/platform-resources/src/DefaultColorSchemesManager.xml index ef951fb8c4d7..26f1e1d35d5b 100644 --- a/platform/platform-resources/src/DefaultColorSchemesManager.xml +++ b/platform/platform-resources/src/DefaultColorSchemesManager.xml @@ -6,7 +6,7 @@