fun runExecuteActionImpl()

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