diff --git a/platform/platform-resources/src/META-INF/XmlPlugin.xml b/platform/platform-resources/src/META-INF/XmlPlugin.xml index dd8d6d7e4d7a..1eb54acc43ae 100644 --- a/platform/platform-resources/src/META-INF/XmlPlugin.xml +++ b/platform/platform-resources/src/META-INF/XmlPlugin.xml @@ -20,8 +20,8 @@ interface="com.intellij.xml.XmlExtension"/> - + - + { public static LookupElement[] getTagNameVariants(final @NotNull XmlTag tag, final String prefix) { List elements = new ArrayList(); - for (XmlCompletionExtension tagNameProvider : XmlCompletionExtension.EP_NAME.getExtensions()) { - if (tagNameProvider.isMyContext(tag)) { - tagNameProvider.addTagNameVariants(elements, tag, prefix); - } + for (XmlTagNameProvider tagNameProvider : XmlTagNameProvider.EP_NAME.getExtensions()) { + tagNameProvider.addTagNameVariants(elements, tag, prefix); } return elements.toArray(new LookupElement[elements.size()]); } diff --git a/xml/impl/src/com/intellij/codeInsight/completion/XmlAttributeReferenceCompletionProvider.java b/xml/impl/src/com/intellij/codeInsight/completion/XmlAttributeReferenceCompletionProvider.java index b7710d6728b2..6b0debbb8896 100644 --- a/xml/impl/src/com/intellij/codeInsight/completion/XmlAttributeReferenceCompletionProvider.java +++ b/xml/impl/src/com/intellij/codeInsight/completion/XmlAttributeReferenceCompletionProvider.java @@ -27,14 +27,14 @@ import com.intellij.psi.xml.XmlAttribute; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; import com.intellij.util.ProcessingContext; -import com.intellij.xml.*; +import com.intellij.xml.NamespaceAwareXmlAttributeDescriptor; +import com.intellij.xml.XmlAttributeDescriptor; +import com.intellij.xml.XmlElementDescriptor; +import com.intellij.xml.XmlExtension; import com.intellij.xml.util.HtmlUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.List; - import static com.intellij.codeInsight.completion.CompletionInitializationContext.DUMMY_IDENTIFIER_TRIMMED; public class XmlAttributeReferenceCompletionProvider extends CompletionProvider { @@ -81,18 +81,9 @@ public class XmlAttributeReferenceCompletionProvider extends CompletionProvider< completionData = CompletionUtil.getCompletionDataByElement(attribute, attribute.getContainingFile().getOriginalFile()); boolean caseSensitive = !(completionData instanceof HtmlCompletionData) || ((HtmlCompletionData)completionData).isCaseSensitive(); - final List completionExtensions = new ArrayList(); - - for (XmlCompletionExtension completionExtension : XmlCompletionExtension.EP_NAME.getExtensions()) { - if (completionExtension.isMyContext(tag)) { - completionExtensions.add(completionExtension); - } - } - for (XmlAttributeDescriptor descriptor : descriptors) { if (isValidVariant(attribute, descriptor, attributes, extension)) { - final String fullAttrName = descriptor.getName(tag); - String name = fullAttrName; + String name = descriptor.getName(tag); InsertHandler insertHandler = XmlAttributeInsertHandler.INSTANCE; @@ -112,7 +103,7 @@ public class XmlAttributeReferenceCompletionProvider extends CompletionProvider< } if (prefix == null || name.startsWith(prefix)) { if (prefix != null && name.length() > prefix.length()) { - name = fullAttrName.substring(prefix.length()); + name = descriptor.getName(tag).substring(prefix.length()); } LookupElementBuilder element = LookupElementBuilder.create(name); if (descriptor instanceof PsiPresentableMetaData) { @@ -125,21 +116,8 @@ public class XmlAttributeReferenceCompletionProvider extends CompletionProvider< element = element .withCaseSensitivity(caseSensitive) .withInsertHandler(insertHandler); - LookupElement e = null; - - for (XmlCompletionExtension tagNameProvider : completionExtensions) { - e = tagNameProvider.setupAttributeLookupElement(tag, descriptor, fullAttrName, element); - - if (e != null) { - break; - } - } - if (e == null) { - e = descriptor.isRequired() - ? PrioritizedLookupElement.withPriority(element.appendTailText("(required)", true), 100) - : element; - } - result.addElement(e); + result.addElement( + descriptor.isRequired() ? PrioritizedLookupElement.withPriority(element.appendTailText("(required)", true), 100) : element); } } } diff --git a/xml/impl/src/com/intellij/psi/impl/source/xml/DefaultXmlCompletionExtension.java b/xml/impl/src/com/intellij/psi/impl/source/xml/DefaultXmlTagNameProvider.java similarity index 95% rename from xml/impl/src/com/intellij/psi/impl/source/xml/DefaultXmlCompletionExtension.java rename to xml/impl/src/com/intellij/psi/impl/source/xml/DefaultXmlTagNameProvider.java index 7fca24b973de..0601b92c40a1 100644 --- a/xml/impl/src/com/intellij/psi/impl/source/xml/DefaultXmlCompletionExtension.java +++ b/xml/impl/src/com/intellij/psi/impl/source/xml/DefaultXmlTagNameProvider.java @@ -23,7 +23,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.xml.XmlTag; import com.intellij.xml.XmlElementDescriptor; import com.intellij.xml.XmlExtension; -import com.intellij.xml.XmlCompletionExtension; +import com.intellij.xml.XmlTagNameProvider; import com.intellij.xml.util.XmlUtil; import org.jetbrains.annotations.NotNull; @@ -32,7 +32,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -public class DefaultXmlCompletionExtension extends XmlCompletionExtension { +public class DefaultXmlTagNameProvider implements XmlTagNameProvider { @Override public void addTagNameVariants(List elements, @NotNull XmlTag tag, String prefix) { final List namespaces; diff --git a/xml/impl/src/com/intellij/xml/XmlCompletionExtension.java b/xml/impl/src/com/intellij/xml/XmlTagNameProvider.java similarity index 51% rename from xml/impl/src/com/intellij/xml/XmlCompletionExtension.java rename to xml/impl/src/com/intellij/xml/XmlTagNameProvider.java index 01aea037c3bb..a0b5809d7277 100644 --- a/xml/impl/src/com/intellij/xml/XmlCompletionExtension.java +++ b/xml/impl/src/com/intellij/xml/XmlTagNameProvider.java @@ -16,11 +16,9 @@ package com.intellij.xml; import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.psi.xml.XmlTag; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.List; @@ -29,21 +27,8 @@ import java.util.List; * * @see HtmlCustomTagNameProvider */ -public abstract class XmlCompletionExtension { - public static final ExtensionPointName EP_NAME = new ExtensionPointName("com.intellij.xml.completionExtension"); +public interface XmlTagNameProvider { + ExtensionPointName EP_NAME = new ExtensionPointName("com.intellij.xml.tagNameProvider"); - public void addTagNameVariants(List elements, @NotNull XmlTag tag, String prefix) { - } - - @Nullable - public LookupElement setupAttributeLookupElement(@NotNull XmlTag contextTag, - @NotNull XmlAttributeDescriptor descriptor, - @NotNull String name, - @NotNull LookupElementBuilder elementBuilder) { - return null; - } - - public boolean isMyContext(@NotNull XmlTag context) { - return true; - } + void addTagNameVariants(List elements, @NotNull XmlTag tag, String prefix); }