diff --git a/xml/impl/src/com/intellij/xml/util/documentation/HtmlDocumentationProvider.java b/xml/impl/src/com/intellij/xml/util/documentation/HtmlDocumentationProvider.java index 749bfed32dcf..8d7a25aa63ec 100644 --- a/xml/impl/src/com/intellij/xml/util/documentation/HtmlDocumentationProvider.java +++ b/xml/impl/src/com/intellij/xml/util/documentation/HtmlDocumentationProvider.java @@ -16,6 +16,8 @@ import com.intellij.openapi.util.ThrowableComputable; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.impl.FakePsiElement; +import com.intellij.psi.impl.source.html.dtd.HtmlAttributeDescriptorImpl; +import com.intellij.psi.impl.source.html.dtd.HtmlElementDescriptorImpl; import com.intellij.psi.impl.source.xml.SchemaPrefix; import com.intellij.psi.meta.PsiMetaData; import com.intellij.psi.presentation.java.SymbolPresentationUtil; @@ -254,7 +256,10 @@ public class HtmlDocumentationProvider implements DocumentationProvider, Externa if (element != null && LookupManager.getInstance(element.getProject()).getActiveLookup() == null) { XmlAttribute attribute = ReadAction.compute(() -> PsiTreeUtil.getParentOfType(element, XmlAttribute.class, true)); if (attribute != null) { - return HtmlCompatibilityData.getAttributeData(attribute.getParent(), attribute.getName()); + XmlAttributeDescriptor descriptor = attribute.getDescriptor(); + String name = descriptor instanceof HtmlAttributeDescriptorImpl && !((HtmlAttributeDescriptorImpl)descriptor).isCaseSensitive() ? + StringUtil.toLowerCase(attribute.getName()) : attribute.getName(); + return HtmlCompatibilityData.getAttributeData(attribute.getParent(), name); } else if (element.getParent() instanceof XmlTag) { return HtmlCompatibilityData.getTagData((XmlTag)element.getParent()); @@ -265,7 +270,10 @@ public class HtmlDocumentationProvider implements DocumentationProvider, Externa } else { XmlTag tag = ReadAction.compute(() -> PsiTreeUtil.getParentOfType(element, XmlTag.class, true)); if (tag != null) { - return HtmlCompatibilityData.getAttributeData(tag, entity.name); + XmlElementDescriptor descriptor = tag.getDescriptor(); + String name = descriptor instanceof HtmlElementDescriptorImpl && !((HtmlElementDescriptorImpl)descriptor).isCaseSensitive() ? + StringUtil.toLowerCase(entity.name) : entity.name; + return HtmlCompatibilityData.getAttributeData(tag, name); } } return null; diff --git a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/html/dtd/HtmlElementDescriptorImpl.java b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/html/dtd/HtmlElementDescriptorImpl.java index 7aa6d8e6942a..172232f95688 100644 --- a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/html/dtd/HtmlElementDescriptorImpl.java +++ b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/html/dtd/HtmlElementDescriptorImpl.java @@ -224,4 +224,8 @@ public class HtmlElementDescriptorImpl extends BaseXmlElementDescriptorImpl { public String toString() { return myDelegate.toString(); } + + public boolean isCaseSensitive() { + return myCaseSensitive; + } } diff --git a/xml/xml-psi-impl/src/com/intellij/xml/util/documentation/HtmlCompatibilityData.java b/xml/xml-psi-impl/src/com/intellij/xml/util/documentation/HtmlCompatibilityData.java index 4b366ea9ccb7..f5dcac7c6d38 100644 --- a/xml/xml-psi-impl/src/com/intellij/xml/util/documentation/HtmlCompatibilityData.java +++ b/xml/xml-psi-impl/src/com/intellij/xml/util/documentation/HtmlCompatibilityData.java @@ -103,7 +103,7 @@ public class HtmlCompatibilityData { public static Map getAttributeData(@Nullable XmlTag tag, String attributeName) { Object data = getTagData(tag); if (data != null) { - Object attributeData = ((Map)data).get(StringUtil.toLowerCase(attributeName)); + Object attributeData = ((Map)data).get(attributeName); if (attributeData != null) return (Map)attributeData; } if (ourGlobalAttributesCache.get() == null) {