revert "add possibility to setup lookup element for XML attribute values; IDEA-102167 layout_* attributes should go first"

This commit is contained in:
Eugene Kudelevsky
2013-09-12 18:31:34 +04:00
parent 7b2249baff
commit d10236baa9
5 changed files with 19 additions and 58 deletions
@@ -20,8 +20,8 @@
interface="com.intellij.xml.XmlExtension"/>
<extensionPoint name="xml.namespaceHelper"
interface="com.intellij.xml.XmlNamespaceHelper"/>
<extensionPoint name="xml.completionExtension"
interface="com.intellij.xml.XmlCompletionExtension"/>
<extensionPoint name="xml.tagNameProvider"
interface="com.intellij.xml.XmlTagNameProvider"/>
<extensionPoint name="xml.fileNSInfoProvider"
interface="com.intellij.psi.xml.XmlFileNSInfoProvider"/>
<extensionPoint name="xml.attributeDescriptorsProvider"
@@ -495,7 +495,7 @@
<xml.psiPolicy language="HTML" implementationClass="com.intellij.psi.impl.source.xml.behavior.EncodeEachSymbolPolicy"/>
<xml.psiPolicy language="XHTML" implementationClass="com.intellij.psi.impl.source.xml.behavior.EncodeEachSymbolPolicy"/>
<xml.completionExtension implementation="com.intellij.psi.impl.source.xml.DefaultXmlCompletionExtension"/>
<xml.tagNameProvider implementation="com.intellij.psi.impl.source.xml.DefaultXmlTagNameProvider"/>
<xml.fileNSInfoProvider implementation="com.intellij.xml.util.HtmlFileNSInfoProvider"/>
<codeInsight.unresolvedReferenceQuickFixProvider
@@ -29,7 +29,7 @@ import com.intellij.psi.xml.XmlTag;
import com.intellij.util.Consumer;
import com.intellij.util.PairConsumer;
import com.intellij.util.ProcessingContext;
import com.intellij.xml.XmlCompletionExtension;
import com.intellij.xml.XmlTagNameProvider;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
@@ -41,10 +41,8 @@ import java.util.List;
public class TagNameReferenceCompletionProvider extends CompletionProvider<CompletionParameters> {
public static LookupElement[] getTagNameVariants(final @NotNull XmlTag tag, final String prefix) {
List<LookupElement> elements = new ArrayList<LookupElement>();
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()]);
}
@@ -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<CompletionParameters> {
@@ -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<XmlCompletionExtension> completionExtensions = new ArrayList<XmlCompletionExtension>();
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<LookupElement> 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);
}
}
}
@@ -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<LookupElement> elements, @NotNull XmlTag tag, String prefix) {
final List<String> namespaces;
@@ -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<XmlCompletionExtension> EP_NAME = new ExtensionPointName<XmlCompletionExtension>("com.intellij.xml.completionExtension");
public interface XmlTagNameProvider {
ExtensionPointName<XmlTagNameProvider> EP_NAME = new ExtensionPointName<XmlTagNameProvider>("com.intellij.xml.tagNameProvider");
public void addTagNameVariants(List<LookupElement> 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<LookupElement> elements, @NotNull XmlTag tag, String prefix);
}