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)};
}
}