in src/org/jetbrains/r/console/RConsoleExecuteActionHandler.kt [349:387]
fun runExecuteActionImpl(): Promise<Unit> {
when (state) {
State.PROMPT, State.DEBUG_PROMPT -> {
if (RConsoleEnterHandler.handleEnterPressed(consoleView.consoleEditor)) {
val document = consoleView.consoleEditor.document
RConsoleEnterHandler.analyzePrompt(consoleView)
ConsoleHistoryController.addToHistory(consoleView, document.text)
return splitAndExecute(document.text)
}
}
State.READ_LN -> {
val document = consoleView.consoleEditor.document
runWriteAction {
document.setText(document.text.lineSequence().first())
}
val text = consoleView.prepareExecuteAction(true, false, true)
(UndoManager.getInstance(consoleView.project) as UndoManagerImpl).invalidateActionsFor(DocumentReferenceManager.getInstance().create(consoleView.currentEditor.document))
consoleView.interpreter.prepareForExecutionAsync().onProcessed { rInterop.replSendReadLn(text) }
fireBusy()
}
State.SUBPROCESS_INPUT -> {
val text = consoleView.prepareExecuteAction(true, false, true)
(UndoManager.getInstance(consoleView.project) as UndoManagerImpl).invalidateActionsFor(DocumentReferenceManager.getInstance().create(consoleView.currentEditor.document))
consoleView.interpreter.prepareForExecutionAsync().onProcessed {
rInterop.replSendReadLn(text + System.lineSeparator())
}
}
State.BUSY -> {
throwExceptionInTests()
HintManager.getInstance().showErrorHint(consoleView.consoleEditor, RBundle.message("console.previous.command.still.running"))
}
State.TERMINATED -> {
throwExceptionInTests()
HintManager.getInstance().showErrorHint(consoleView.consoleEditor, RBundle.message("console.process.terminated"))
}
}
return resolvedPromise()
}