mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Do not check spelling for HTML colors + IDEA-53780 Wrong typo warning in a color value
This commit is contained in:
@@ -18,10 +18,9 @@ package com.intellij.spellchecker.tokenizer;
|
||||
import com.intellij.codeInsight.daemon.impl.actions.AbstractSuppressByNoInspectionCommentFix;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiComment;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiNameIdentifierOwner;
|
||||
import com.intellij.psi.PsiPlainText;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
|
||||
import com.intellij.psi.xml.XmlAttributeValue;
|
||||
import com.intellij.psi.xml.XmlText;
|
||||
import com.intellij.spellchecker.inspections.PlainTextSplitter;
|
||||
@@ -34,7 +33,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class SpellcheckingStrategy {
|
||||
protected final Tokenizer<PsiComment> myCommentTokenizer = new CommentTokenizer();
|
||||
protected final Tokenizer<XmlAttributeValue> myXmlAttributeTokenizer = TokenizerBase.create(TextSplitter.getInstance());
|
||||
protected final Tokenizer<XmlAttributeValue> myXmlAttributeTokenizer = new XmlAttributeValueTokenizer();
|
||||
protected final Tokenizer<XmlText> myXmlTextTokenizer = new XmlTextTokenizer();
|
||||
|
||||
public static final ExtensionPointName<SpellcheckingStrategy> EP_NAME = ExtensionPointName.create("com.intellij.spellchecker.support");
|
||||
@@ -85,4 +84,27 @@ public class SpellcheckingStrategy {
|
||||
public static SpellCheckerQuickFix[] getDefaultBatchFixes() {
|
||||
return BATCH_FIXES;
|
||||
}
|
||||
|
||||
private static class XmlAttributeValueTokenizer extends Tokenizer<XmlAttributeValue> {
|
||||
public void tokenize(@NotNull final XmlAttributeValue element, final TokenConsumer consumer) {
|
||||
if (element instanceof PsiLanguageInjectionHost && InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)element)) return;
|
||||
|
||||
final String valueTextTrimmed = element.getValue().trim();
|
||||
// do not inspect colors like #00aaFF
|
||||
if (valueTextTrimmed.startsWith("#") && valueTextTrimmed.length() <= 7 && isHexString(valueTextTrimmed.substring(1))) {
|
||||
return;
|
||||
}
|
||||
|
||||
consumer.consumeToken(element, TextSplitter.getInstance());
|
||||
}
|
||||
|
||||
private static boolean isHexString(final String s) {
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
if (!StringUtil.isHexDigit(s.charAt(i))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user