diff --git a/spellchecker/src/META-INF/SpellCheckerPlugin.xml b/spellchecker/src/META-INF/SpellCheckerPlugin.xml
index e9ad782766e9..a6108edac1ff 100644
--- a/spellchecker/src/META-INF/SpellCheckerPlugin.xml
+++ b/spellchecker/src/META-INF/SpellCheckerPlugin.xml
@@ -35,7 +35,7 @@
-
+
diff --git a/spellchecker/src/com/intellij/spellchecker/inspections/SpellCheckingInspection.java b/spellchecker/src/com/intellij/spellchecker/inspections/SpellCheckingInspection.java
index f6f0d88fa775..c27047c96308 100644
--- a/spellchecker/src/com/intellij/spellchecker/inspections/SpellCheckingInspection.java
+++ b/spellchecker/src/com/intellij/spellchecker/inspections/SpellCheckingInspection.java
@@ -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)
diff --git a/spellchecker/src/com/intellij/spellchecker/tokenizer/SpellcheckingStrategy.java b/spellchecker/src/com/intellij/spellchecker/tokenizer/SpellcheckingStrategy.java
index cc70a7daf351..95cd1e0f0f4c 100644
--- a/spellchecker/src/com/intellij/spellchecker/tokenizer/SpellcheckingStrategy.java
+++ b/spellchecker/src/com/intellij/spellchecker/tokenizer/SpellcheckingStrategy.java
@@ -85,7 +85,7 @@ public class SpellcheckingStrategy {
return BATCH_FIXES;
}
- private static class XmlAttributeValueTokenizer extends Tokenizer {
+ protected static class XmlAttributeValueTokenizer extends Tokenizer {
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;
+ }
}