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);
}