void (@NotNull final String code) { CountDownLatch latch = new CountDownLatch(1); TransactionGuard.submitTransaction(this, () -> { final String codeToExecute = code.endsWith("\n") || myExecuteActionHandler.checkSingleLine(code) ? code : code + "\n"; DocumentEx document = getConsoleEditor().getDocument(); String oldText = document.getText(); ApplicationManager.getApplication().runWriteAction(() -> { setInputText(codeToExecute); PsiDocumentManager.getInstance(getProject()).commitDocument(document); PsiFile psiFile = PsiDocumentManager.getInstance(getProject()).getPsiFile(document); if (psiFile != null) { CommandProcessor.getInstance().runUndoTransparentAction( () -> CodeStyleManager.getInstance(getProject()).adjustLineIndent(psiFile, new TextRange(0, psiFile.getTextLength())) ); } int oldOffset = getConsoleEditor().getCaretModel().getOffset(); getConsoleEditor().getCaretModel().moveToOffset(document.getTextLength()); myExecuteActionHandler.runExecuteAction(this); if (!StringUtil.isEmpty(oldText)) { ApplicationManager.getApplication().runWriteAction(() -> setInputText(oldText)); getConsoleEditor().getCaretModel().moveToOffset(oldOffset); } }); latch.countDown(); }); try { latch.await(1, TimeUnit.MINUTES); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } }