package org.jetbrains.plugins.clojure.refactoring.rename; import com.intellij.patterns.ElementPattern; import com.intellij.psi.PsiElement; import com.intellij.refactoring.rename.RenameInputValidator; import com.intellij.util.ProcessingContext; import org.jetbrains.plugins.clojure.lexer.ClojureFlexLexer; import org.jetbrains.plugins.clojure.lexer.ClojureTokenTypes; /** * @author ilyas */ public class ClojureRenameInputValidator implements RenameInputValidator { public ElementPattern<? extends PsiElement> getPattern() { return new ClojureSymbolPattern(); } public boolean isInputValid(String newName, PsiElement element, ProcessingContext context) { final ClojureFlexLexer lexer = new ClojureFlexLexer(); lexer.start(newName, 0, newName.length(), 0); if (lexer.getTokenType() != ClojureTokenTypes.symATOM) return false; lexer.advance(); return lexer.getTokenType() == null; } }