in cell/src/main/java/jetbrains/jetpad/cell/text/TextEditingTrait.java [106:156]
public void onComplete(Cell cell, CompletionEvent event) {
CompletionController handler = getCompletionController(cell);
if (handler.isActive()) {
super.onComplete(cell, event);
return;
}
final TextCell editor = (TextCell) cell;
CompletionItems completion = new CompletionItems(editor.get(Completion.COMPLETION).get(CompletionParameters.EMPTY));
String prefixText = editor.getPrefixText();
if (editor.isEnd() && editor.get(Completion.COMPLETION_CONFIG).canDoRightTransform(completion, prefixText)) {
BaseCompletionParameters cp = new BaseCompletionParameters() {
@Override
public boolean isEndRightTransform() {
return true;
}
@Override
public boolean isMenu() {
return true;
}
};
CompletionSupplier supplier = editor.get(Completion.RIGHT_TRANSFORM);
if ((!supplier.isEmpty(cp) || !supplier.isAsyncEmpty(cp)) && editor.get(TextEditing.RT_ON_END)) {
if (cell.get(Cell.RIGHT_POPUP) == null) {
TextCell popup = CompletionSupport.showSideTransformPopup(editor, editor.rightPopup(), cell.get(Completion.RIGHT_TRANSFORM), true);
popup.get(Completion.COMPLETION_CONTROLLER).activate(new Runnable() {
@Override
public void run() {
editor.focus();
}
});
}
event.consume();
return;
}
}
List<CompletionItem> prefixed = completion.prefixedBy(prefixText);
String currentText = TextEditing.nonNullText(editor);
if (prefixed.size() == 1 && !currentText.isEmpty() && canCompleteWithCtrlSpace(editor)) {
prefixed.get(0).complete(prefixText).run();
cell.dispatch(new Event(), Cells.AFTER_COMPLETED);
event.consume();
} else if (handler.canActivate()) {
handler.activate();
event.consume();
}
}