mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-112979 spellchecker inspection should be suppressed for symbols user cannot edit
This commit is contained in:
@@ -35,7 +35,7 @@
|
||||
|
||||
<spellchecker.support language="TEXT" implementationClass="com.intellij.spellchecker.tokenizer.SpellcheckingStrategy"/>
|
||||
<spellchecker.support language="HTML" implementationClass="com.intellij.spellchecker.tokenizer.HtmlSpellcheckingStrategy"/>
|
||||
<spellchecker.support language="XML" implementationClass="com.intellij.spellchecker.xml.XmlSpellcheckingStrategy"/>
|
||||
<spellchecker.support language="XML" implementationClass="com.intellij.spellchecker.xml.XmlSpellcheckingStrategy" id="xml"/>
|
||||
<spellchecker.bundledDictionaryProvider implementation="com.intellij.spellchecker.DefaultBundledDictionariesProvider"/>
|
||||
|
||||
<projectService serviceImplementation="com.intellij.spellchecker.state.ProjectDictionaryState"/>
|
||||
|
||||
+14
-10
@@ -61,7 +61,7 @@ public class SpellCheckingInspection extends LocalInspectionTool implements Batc
|
||||
@Override
|
||||
public SuppressQuickFix[] getBatchSuppressActions(@Nullable PsiElement element) {
|
||||
if (element != null) {
|
||||
SpellcheckingStrategy strategy = LanguageSpellchecking.INSTANCE.forLanguage(element.getLanguage());
|
||||
SpellcheckingStrategy strategy = getSpellcheckingStrategy(element, element.getLanguage());
|
||||
if(strategy instanceof SuppressibleSpellcheckingStrategy) {
|
||||
return ((SuppressibleSpellcheckingStrategy)strategy).getSuppressActions(element, getShortName());
|
||||
}
|
||||
@@ -69,9 +69,18 @@ public class SpellCheckingInspection extends LocalInspectionTool implements Batc
|
||||
return SuppressQuickFix.EMPTY_ARRAY;
|
||||
}
|
||||
|
||||
private static SpellcheckingStrategy getSpellcheckingStrategy(@NotNull PsiElement element, @NotNull Language language) {
|
||||
for (SpellcheckingStrategy strategy : LanguageSpellchecking.INSTANCE.allForLanguage(language)) {
|
||||
if (strategy.isMyContext(element)) {
|
||||
return strategy;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSuppressedFor(@NotNull PsiElement element) {
|
||||
SpellcheckingStrategy strategy = LanguageSpellchecking.INSTANCE.forLanguage(element.getLanguage());
|
||||
SpellcheckingStrategy strategy = getSpellcheckingStrategy(element, element.getLanguage());
|
||||
return strategy instanceof SuppressibleSpellcheckingStrategy &&
|
||||
((SuppressibleSpellcheckingStrategy)strategy).isSuppressedFor(element, getShortName());
|
||||
}
|
||||
@@ -94,11 +103,6 @@ public class SpellCheckingInspection extends LocalInspectionTool implements Batc
|
||||
return SpellCheckerManager.getHighlightDisplayLevel();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static SpellcheckingStrategy getFactoryByLanguage(@NotNull Language lang) {
|
||||
return LanguageSpellchecking.INSTANCE.forLanguage(lang);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, final boolean isOnTheFly) {
|
||||
@@ -146,7 +150,7 @@ public class SpellCheckingInspection extends LocalInspectionTool implements Batc
|
||||
* @param consumer the consumer of tokens
|
||||
*/
|
||||
public static void tokenize(@NotNull final PsiElement element, @NotNull final Language language, TokenConsumer consumer) {
|
||||
final SpellcheckingStrategy factoryByLanguage = getFactoryByLanguage(language);
|
||||
final SpellcheckingStrategy factoryByLanguage = getSpellcheckingStrategy(element, language);
|
||||
if(factoryByLanguage==null) return;
|
||||
Tokenizer tokenizer = factoryByLanguage.getTokenizer(element);
|
||||
//noinspection unchecked
|
||||
@@ -155,7 +159,7 @@ public class SpellCheckingInspection extends LocalInspectionTool implements Batc
|
||||
|
||||
|
||||
private static void addBatchDescriptor(PsiElement element, int offset, @NotNull TextRange textRange, @NotNull ProblemsHolder holder) {
|
||||
final SpellcheckingStrategy strategy = getFactoryByLanguage(element.getLanguage());
|
||||
final SpellcheckingStrategy strategy = getSpellcheckingStrategy(element, element.getLanguage());
|
||||
|
||||
SpellCheckerQuickFix[] fixes = strategy != null
|
||||
? strategy.getBatchFixes(element, offset, textRange)
|
||||
@@ -166,7 +170,7 @@ public class SpellCheckingInspection extends LocalInspectionTool implements Batc
|
||||
|
||||
private static void addRegularDescriptor(PsiElement element, int offset, @NotNull TextRange textRange, @NotNull ProblemsHolder holder,
|
||||
boolean useRename, String wordWithTypo) {
|
||||
SpellcheckingStrategy strategy = getFactoryByLanguage(element.getLanguage());
|
||||
SpellcheckingStrategy strategy = getSpellcheckingStrategy(element, element.getLanguage());
|
||||
|
||||
SpellCheckerQuickFix[] fixes = strategy != null
|
||||
? strategy.getRegularFixes(element, offset, textRange, useRename, wordWithTypo)
|
||||
|
||||
@@ -85,7 +85,7 @@ public class SpellcheckingStrategy {
|
||||
return BATCH_FIXES;
|
||||
}
|
||||
|
||||
private static class XmlAttributeValueTokenizer extends Tokenizer<XmlAttributeValue> {
|
||||
protected 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;
|
||||
|
||||
@@ -107,4 +107,8 @@ public class SpellcheckingStrategy {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isMyContext(@NotNull PsiElement element) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user