package org.elixir_lang.code_insight.completion.insert_handler;
import com.intellij.codeInsight.completion.InsertHandler;
import com.intellij.codeInsight.completion.InsertionContext;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.openapi.util.TextRange;
import org.jetbrains.annotations.NotNull;
public class CallDefinitionClause implements InsertHandler<LookupElement> {
/*
* CONSTANTS
*/
public static final InsertHandler<LookupElement> INSTANCE =
new CallDefinitionClause();
/*
* Public Instance Methods
*/
@Override
public void handleInsert(@NotNull InsertionContext context,
@NotNull LookupElement item) {
int tailOffset = context.getTailOffset();
String currentTail = context.getDocument().getText(
new TextRange(tailOffset, tailOffset + 1)
);
char firstChar = currentTail.charAt(0);
if (firstChar != ' ' && firstChar != '(' && firstChar != '[') {
context.getDocument().insertString(tailOffset, "()");
// + 1 to put between the `(` and `)`
context.getEditor().getCaretModel().moveToOffset(tailOffset + 1);
}
}
}