From a051f74964cf74418206f651ede85ebb7bd34044 Mon Sep 17 00:00:00 2001 From: Elizaveta Shashkova Date: Fri, 11 Aug 2017 15:16:22 +0300 Subject: [PATCH] Handle empty starting script on Java side because of Remote Python Console (PY-25468) --- python/helpers/pydev/_pydev_bundle/pydev_console_utils.py | 3 +++ python/helpers/pydev/pydevconsole.py | 2 -- .../com/jetbrains/python/console/PydevConsoleRunnerImpl.java | 4 ++++ .../src/com/jetbrains/python/console/PythonConsoleView.java | 5 ++++- .../com/jetbrains/env/python/console/PyConsoleTask.java | 2 +- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/python/helpers/pydev/_pydev_bundle/pydev_console_utils.py b/python/helpers/pydev/_pydev_bundle/pydev_console_utils.py index 92c88d5837e4..3f6d0ca47592 100644 --- a/python/helpers/pydev/_pydev_bundle/pydev_console_utils.py +++ b/python/helpers/pydev/_pydev_bundle/pydev_console_utils.py @@ -356,6 +356,9 @@ class BaseInterpreterInterface: return False def execLine(self, line): + if not self.banner_shown: + line = self.build_banner() + line + self.banner_shown = True return self.do_exec_code(line, True) def execMultipleLines(self, lines): diff --git a/python/helpers/pydev/pydevconsole.py b/python/helpers/pydev/pydevconsole.py index 04e51cc85f61..b50f3d4e3b6e 100644 --- a/python/helpers/pydev/pydevconsole.py +++ b/python/helpers/pydev/pydevconsole.py @@ -325,8 +325,6 @@ def start_console_server(host, port, interpreter): print(port) print(interpreter.client_port) - interpreter.execMultipleLines("") - while True: try: server.serve_forever() diff --git a/python/src/com/jetbrains/python/console/PydevConsoleRunnerImpl.java b/python/src/com/jetbrains/python/console/PydevConsoleRunnerImpl.java index 48cefa37b0d1..ddb2923aa909 100644 --- a/python/src/com/jetbrains/python/console/PydevConsoleRunnerImpl.java +++ b/python/src/com/jetbrains/python/console/PydevConsoleRunnerImpl.java @@ -699,6 +699,10 @@ public class PydevConsoleRunnerImpl implements PydevConsoleRunner { enableConsoleExecuteAction(); } + if (statements2execute.length == 1 && statements2execute[0].isEmpty()) { + statements2execute[0] = "\t"; + } + for (String statement : statements2execute) { consoleView.executeStatement(statement + "\n", ProcessOutputTypes.SYSTEM); } diff --git a/python/src/com/jetbrains/python/console/PythonConsoleView.java b/python/src/com/jetbrains/python/console/PythonConsoleView.java index 2b46fa9f55eb..c84deff5f118 100644 --- a/python/src/com/jetbrains/python/console/PythonConsoleView.java +++ b/python/src/com/jetbrains/python/console/PythonConsoleView.java @@ -295,7 +295,10 @@ public class PythonConsoleView extends LanguageConsoleImpl implements Observable VirtualFile file = getVirtualFile(); if (PyConsoleUtil.detectIPythonImported(text, outputType)) { PyConsoleUtil.markIPython(file); - getExecuteActionHandler().updateConsoleState(); + PythonConsoleExecuteActionHandler handler = getExecuteActionHandler(); + if (handler != null) { + handler.updateConsoleState(); + } } if (PyConsoleUtil.detectIPythonAutomagicOn(text)) { PyConsoleUtil.setIPythonAutomagic(file, true); diff --git a/python/testSrc/com/jetbrains/env/python/console/PyConsoleTask.java b/python/testSrc/com/jetbrains/env/python/console/PyConsoleTask.java index 66bb931adafd..e7a8d8c9fe43 100644 --- a/python/testSrc/com/jetbrains/env/python/console/PyConsoleTask.java +++ b/python/testSrc/com/jetbrains/env/python/console/PyConsoleTask.java @@ -149,7 +149,7 @@ public class PyConsoleTask extends PyExecutionFixtureTestTask { new PydevConsoleRunnerImpl(project, sdk, PyConsoleType.PYTHON, myFixture.getTempDirPath(), Maps.newHashMap(), PyConsoleOptions.getInstance(project).getPythonConsoleSettings(), (s) -> { - }) { + }, PydevConsoleRunnerImpl.CONSOLE_START_COMMAND) { protected void showContentDescriptor(RunContentDescriptor contentDescriptor) { myContentDescriptorRef.set(contentDescriptor); super.showContentDescriptor(contentDescriptor);