IJPL-155874 make SpellCheckingInspection dumb aware

GitOrigin-RevId: 629e15e2feb514e36a605e5478d8627b2828f502
This commit is contained in:
Max Medvedev
2024-08-02 22:47:44 +02:00
committed by intellij-monorepo-bot
parent 14c1fea329
commit 0c64030e25
4 changed files with 13 additions and 6 deletions

View File

@@ -24,7 +24,7 @@
<localInspection shortName="SpellCheckingInspection" bundle="messages.SpellCheckerBundle"
key="spellchecking.inspection.name" groupKey="proofread" enabledByDefault="true" level="TYPO"
language=""
implementationClass="com.intellij.spellchecker.inspections.SpellCheckingInspection"/>
implementationClass="com.intellij.spellchecker.inspections.SpellCheckingInspection" dumbAware="true"/>
<nameSuggestionProvider id="DictionarySuggestionProvider" implementation="com.intellij.spellchecker.quickfixes.DictionarySuggestionProvider" order="first"/>
<severitiesProvider implementation="com.intellij.spellchecker.SpellCheckerSeveritiesProvider"/>

View File

@@ -9,6 +9,8 @@ import com.intellij.lang.LanguageNamesValidation;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.lang.refactoring.NamesValidator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.psi.PsiElement;
@@ -29,7 +31,7 @@ import java.util.Set;
import static com.intellij.codeInspection.options.OptPane.checkbox;
import static com.intellij.codeInspection.options.OptPane.pane;
public final class SpellCheckingInspection extends LocalInspectionTool {
public final class SpellCheckingInspection extends LocalInspectionTool implements DumbAware {
public static final String SPELL_CHECKING_INSPECTION_TOOL_NAME = "SpellCheckingInspection";
@Override
@@ -45,8 +47,9 @@ public final class SpellCheckingInspection extends LocalInspectionTool {
}
private static SpellcheckingStrategy getSpellcheckingStrategy(@NotNull PsiElement element, @NotNull Language language) {
DumbService dumbService = DumbService.getInstance(element.getProject());
for (SpellcheckingStrategy strategy : LanguageSpellchecking.INSTANCE.allForLanguage(language)) {
if (strategy.isMyContext(element)) {
if (dumbService.isUsableInCurrentContext(strategy) && strategy.isMyContext(element)) {
return strategy;
}
}

View File

@@ -9,6 +9,7 @@ import com.intellij.lang.ParserDefinition;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.impl.CustomSyntaxTableFileType;
import com.intellij.openapi.project.PossiblyDumbAware;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
@@ -18,7 +19,7 @@ import com.intellij.spellchecker.DictionaryLayer;
import com.intellij.spellchecker.DictionaryLayersProvider;
import com.intellij.spellchecker.inspections.PlainTextSplitter;
import com.intellij.spellchecker.inspections.SpellCheckingInspection;
import com.intellij.spellchecker.quickfixes.*;
import com.intellij.spellchecker.quickfixes.SpellCheckerQuickFixFactory;
import com.intellij.spellchecker.settings.SpellCheckerSettings;
import com.intellij.util.KeyedLazyInstance;
import org.jetbrains.annotations.NotNull;
@@ -32,8 +33,10 @@ import java.util.Set;
* <p>
* Register via extension point {@code com.intellij.spellchecker.support}
* and override {@link #getTokenizer(PsiElement)} to skip/handle specific elements.
* <p>
* Mark your strategy as {@link com.intellij.openapi.project.DumbAware} if it does not need indexes to perform
*/
public class SpellcheckingStrategy {
public class SpellcheckingStrategy implements PossiblyDumbAware {
protected final Tokenizer<PsiComment> myCommentTokenizer = new CommentTokenizer();
public static final ExtensionPointName<KeyedLazyInstance<SpellcheckingStrategy>> EP_NAME =