mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Html: replace old isSingleAttribute method with brand new isBooleanAttribute
This commit is contained in:
@@ -17,7 +17,6 @@ package com.intellij.codeInsight.completion;
|
||||
|
||||
import com.intellij.codeInsight.AutoPopupController;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.lang.html.HTMLLanguage;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
@@ -34,7 +33,6 @@ import com.intellij.psi.xml.XmlTag;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import com.intellij.xml.XmlNamespaceHelper;
|
||||
import com.intellij.xml.util.HtmlUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -65,10 +63,6 @@ public class XmlAttributeInsertHandler implements InsertHandler<LookupElement> {
|
||||
final Document document = editor.getDocument();
|
||||
final int caretOffset = editor.getCaretModel().getOffset();
|
||||
final PsiFile file = context.getFile();
|
||||
if (file.getLanguage() == HTMLLanguage.INSTANCE &&
|
||||
HtmlUtil.isSingleHtmlAttribute((String)item.getObject())) {
|
||||
return;
|
||||
}
|
||||
|
||||
final CharSequence chars = document.getCharsSequence();
|
||||
if (!CharArrayUtil.regionMatches(chars, caretOffset, "=\"") && !CharArrayUtil.regionMatches(chars, caretOffset, "='")) {
|
||||
|
||||
+7
@@ -20,6 +20,7 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.psi.html.HtmlTag;
|
||||
import com.intellij.psi.impl.source.xml.XmlAttributeImpl;
|
||||
import com.intellij.psi.impl.source.xml.XmlAttributeReference;
|
||||
import com.intellij.psi.meta.PsiPresentableMetaData;
|
||||
@@ -87,6 +88,12 @@ public class XmlAttributeReferenceCompletionProvider extends CompletionProvider<
|
||||
|
||||
InsertHandler<LookupElement> insertHandler = XmlAttributeInsertHandler.INSTANCE;
|
||||
|
||||
if (tag instanceof HtmlTag &&
|
||||
HtmlUtil.isShortNotationOfBooleanAttributePreferred() &&
|
||||
HtmlUtil.isBooleanAttribute(descriptor, tag)) {
|
||||
insertHandler = null;
|
||||
}
|
||||
|
||||
if (replacementInsertHandler != null) {
|
||||
insertHandler = replacementInsertHandler;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.html.HtmlTag;
|
||||
import com.intellij.psi.impl.source.html.HtmlDocumentImpl;
|
||||
import com.intellij.psi.impl.source.html.dtd.HtmlAttributeDescriptorImpl;
|
||||
import com.intellij.psi.impl.source.parsing.xml.HtmlBuilderDriver;
|
||||
import com.intellij.psi.impl.source.parsing.xml.XmlBuilder;
|
||||
import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider;
|
||||
@@ -125,11 +126,7 @@ public class HtmlUtil {
|
||||
|
||||
@NonNls private static final String[] INLINE_ELEMENTS_CONTAINER = {"p", "h1", "h2", "h3", "h4", "h5", "h6", "pre", "dt"};
|
||||
private static final Set<String> INLINE_ELEMENTS_CONTAINER_MAP = new THashSet<String>();
|
||||
|
||||
@NonNls private static final String[] EMPTY_ATTRS =
|
||||
{"nowrap", "compact", "disabled", "readonly", "selected", "multiple", "nohref", "ismap", "declare", "noshade", "checked"};
|
||||
private static final Set<String> EMPTY_ATTRS_MAP = new THashSet<String>();
|
||||
|
||||
|
||||
private static final Set<String> POSSIBLY_INLINE_TAGS_MAP = new THashSet<String>();
|
||||
|
||||
@NonNls private static final String[] HTML5_TAGS = {
|
||||
@@ -146,7 +143,6 @@ public class HtmlUtil {
|
||||
if (control.endTag == HTMLControls.TagState.FORBIDDEN) EMPTY_TAGS_MAP.add(tagName);
|
||||
AUTO_CLOSE_BY_MAP.put(tagName, new THashSet<String>(control.autoClosedBy));
|
||||
}
|
||||
ContainerUtil.addAll(EMPTY_ATTRS_MAP, EMPTY_ATTRS);
|
||||
ContainerUtil.addAll(OPTIONAL_END_TAGS_MAP, OPTIONAL_END_TAGS);
|
||||
ContainerUtil.addAll(BLOCK_TAGS_MAP, BLOCK_TAGS);
|
||||
ContainerUtil.addAll(INLINE_ELEMENTS_CONTAINER_MAP, INLINE_ELEMENTS_CONTAINER);
|
||||
@@ -175,10 +171,6 @@ public class HtmlUtil {
|
||||
return closingTags != null && closingTags.contains(childTagName);
|
||||
}
|
||||
|
||||
public static boolean isSingleHtmlAttribute(String attrName) {
|
||||
return EMPTY_ATTRS_MAP.contains(attrName.toLowerCase(Locale.US));
|
||||
}
|
||||
|
||||
public static boolean isHtmlBlockTag(String tagName) {
|
||||
return BLOCK_TAGS_MAP.contains(tagName.toLowerCase(Locale.US));
|
||||
}
|
||||
@@ -261,16 +253,18 @@ public class HtmlUtil {
|
||||
}
|
||||
|
||||
public static boolean isBooleanAttribute(@NotNull XmlAttributeDescriptor descriptor, @Nullable XmlElement context) {
|
||||
final String[] values = descriptor.getEnumeratedValues();
|
||||
if (values == null) {
|
||||
return false;
|
||||
}
|
||||
if (values.length == 2) {
|
||||
return values[0].isEmpty() && values[1].equals(descriptor.getName())
|
||||
|| values[1].isEmpty() && values[0].equals(descriptor.getName());
|
||||
}
|
||||
else if (values.length == 1) {
|
||||
return descriptor.getName().equals(values[0]);
|
||||
if (descriptor instanceof HtmlAttributeDescriptorImpl && descriptor.isEnumerated()) {
|
||||
final String[] values = descriptor.getEnumeratedValues();
|
||||
if (values == null) {
|
||||
return false;
|
||||
}
|
||||
if (values.length == 2) {
|
||||
return values[0].isEmpty() && values[1].equals(descriptor.getName())
|
||||
|| values[1].isEmpty() && values[0].equals(descriptor.getName());
|
||||
}
|
||||
else if (values.length == 1) {
|
||||
return descriptor.getName().equals(values[0]);
|
||||
}
|
||||
}
|
||||
return context != null && isCustomBooleanAttribute(descriptor.getName(), context);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user