summaryrefslogtreecommitdiff
path: root/python/src/com/jetbrains/python/run/PythonCommandLineState.java
diff options
context:
space:
mode:
Diffstat (limited to 'python/src/com/jetbrains/python/run/PythonCommandLineState.java')
-rw-r--r--python/src/com/jetbrains/python/run/PythonCommandLineState.java26
1 files changed, 18 insertions, 8 deletions
diff --git a/python/src/com/jetbrains/python/run/PythonCommandLineState.java b/python/src/com/jetbrains/python/run/PythonCommandLineState.java
index 216e68c58e1d..a4d1718bb006 100644
--- a/python/src/com/jetbrains/python/run/PythonCommandLineState.java
+++ b/python/src/com/jetbrains/python/run/PythonCommandLineState.java
@@ -47,6 +47,7 @@ import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.vfs.JarFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.remote.RemoteProcessHandlerBase;
import com.intellij.util.PlatformUtils;
import com.intellij.util.containers.HashMap;
import com.jetbrains.python.PythonHelpersLocator;
@@ -80,7 +81,9 @@ public abstract class PythonCommandLineState extends CommandLineState {
public static final String GROUP_DEBUGGER = "Debugger";
public static final String GROUP_SCRIPT = "Script";
private final AbstractPythonRunConfiguration myConfig;
- private final List<Filter> myFilters;
+
+ private final List<Filter> myFilters = Lists.<Filter>newArrayList(new UrlFilter());
+
private Boolean myMultiprocessDebug = null;
public boolean isDebug() {
@@ -99,15 +102,9 @@ public abstract class PythonCommandLineState extends CommandLineState {
return serverSocket;
}
- public PythonCommandLineState(AbstractPythonRunConfiguration runConfiguration, ExecutionEnvironment env, List<Filter> filters) {
+ public PythonCommandLineState(AbstractPythonRunConfiguration runConfiguration, ExecutionEnvironment env) {
super(env);
myConfig = runConfiguration;
- myFilters = Lists.newArrayList(filters);
- addDefaultFilters();
- }
-
- protected void addDefaultFilters() {
- myFilters.add(new UrlFilter());
}
@Nullable
@@ -134,10 +131,23 @@ public abstract class PythonCommandLineState extends CommandLineState {
protected ConsoleView createAndAttachConsole(Project project, ProcessHandler processHandler, Executor executor)
throws ExecutionException {
final ConsoleView consoleView = createConsoleBuilder(project).filters(myFilters).getConsole();
+
+ addTracebackFilter(project, consoleView, processHandler);
+
consoleView.attachToProcess(processHandler);
return consoleView;
}
+ protected void addTracebackFilter(Project project, ConsoleView consoleView, ProcessHandler processHandler) {
+ if (PySdkUtil.isRemote(myConfig.getSdk())) {
+ assert processHandler instanceof RemoteProcessHandlerBase;
+ consoleView.addMessageFilter(new PyRemoteTracebackFilter(project, myConfig.getWorkingDirectory(), (RemoteProcessHandlerBase) processHandler));
+ }
+ else {
+ consoleView.addMessageFilter(new PythonTracebackFilter(project, myConfig.getWorkingDirectory()));
+ }
+ }
+
private TextConsoleBuilder createConsoleBuilder(Project project) {
if (isDebug()) {
return new PyDebugConsoleBuilder(project, PythonSdkType.findSdkByPath(myConfig.getInterpreterPath()));