package org.jetbrains.plugins.cucumber.spellchecker; import com.intellij.lang.ASTNode; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.impl.source.tree.LeafElement; import com.intellij.spellchecker.quickfixes.AcceptWordAsCorrect; import com.intellij.spellchecker.quickfixes.ChangeTo; import com.intellij.spellchecker.quickfixes.SpellCheckerQuickFix; import com.intellij.spellchecker.tokenizer.SpellcheckingStrategy; import com.intellij.spellchecker.tokenizer.Tokenizer; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.cucumber.psi.GherkinElementType; /** * @author oleg */ public class GherkinSpellcheckerStrategy extends SpellcheckingStrategy { @NotNull @Override public Tokenizer getTokenizer(final PsiElement element) { if (element instanceof LeafElement) { final ASTNode node = element.getNode(); if (node != null && node.getElementType() instanceof GherkinElementType){ return SpellcheckingStrategy.TEXT_TOKENIZER; } } return super.getTokenizer(element); } @Override public SpellCheckerQuickFix[] getRegularFixes(PsiElement element, int offset, @NotNull TextRange textRange, boolean useRename, String wordWithTypo) { return new SpellCheckerQuickFix[]{new ChangeTo(wordWithTypo), new AcceptWordAsCorrect(wordWithTypo)}; } }