mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -11,10 +11,10 @@ os.environ['TERM'] = 'emacs' #to use proper page_more() for paging
|
||||
#raise ImportError()
|
||||
|
||||
try:
|
||||
from pydev_ipython_console_010 import PyDevFrontEnd
|
||||
except:
|
||||
#IPython 0.11 broke compatibility...
|
||||
from pydev_ipython_console_011 import PyDevFrontEnd
|
||||
except:
|
||||
from pydev_ipython_console_010 import PyDevFrontEnd
|
||||
|
||||
#=======================================================================================================================
|
||||
# InterpreterInterface
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
from IPython.frontend.terminal.interactiveshell import TerminalInteractiveShell
|
||||
try:
|
||||
from IPython.terminal.interactiveshell import TerminalInteractiveShell
|
||||
except ImportError:
|
||||
from IPython.frontend.terminal.interactiveshell import TerminalInteractiveShell
|
||||
from IPython.utils import io
|
||||
import sys
|
||||
import codeop, re
|
||||
|
||||
@@ -155,6 +155,13 @@ class PyDBCommandThread(PyDBDaemonThread):
|
||||
#PydevdLog(0, 'Finishing debug communication...(3)')
|
||||
|
||||
|
||||
def killAllPydevThreads():
|
||||
threads = threadingEnumerate()
|
||||
for t in threads:
|
||||
if hasattr(t, 'doKillPydevThread'):
|
||||
t.doKillPydevThread()
|
||||
|
||||
|
||||
#=======================================================================================================================
|
||||
# PyDBCheckAliveThread
|
||||
#=======================================================================================================================
|
||||
@@ -174,10 +181,7 @@ class PyDBCheckAliveThread(PyDBDaemonThread):
|
||||
try:
|
||||
pydev_log.debug("No alive threads, finishing debug session")
|
||||
self.pyDb.FinishDebuggingSession()
|
||||
threads = threadingEnumerate()
|
||||
for t in threads:
|
||||
if hasattr(t, 'doKillPydevThread'):
|
||||
t.doKillPydevThread()
|
||||
killAllPydevThreads()
|
||||
except:
|
||||
traceback.print_exc()
|
||||
|
||||
@@ -1351,6 +1355,36 @@ def _locked_settrace(host, stdoutToServer, stderrToServer, port, suspend, trace_
|
||||
if suspend:
|
||||
debugger.setSuspend(t, CMD_SET_BREAK)
|
||||
|
||||
def stoptrace():
|
||||
global connected
|
||||
if connected:
|
||||
pydevd_tracing.RestoreSysSetTraceFunc()
|
||||
sys.settrace(None)
|
||||
try:
|
||||
#not available in jython!
|
||||
threading.settrace(None) # for all future threads
|
||||
except:
|
||||
pass
|
||||
|
||||
try:
|
||||
thread.start_new_thread = _original_start_new_thread
|
||||
thread.start_new = _original_start_new_thread
|
||||
except:
|
||||
pass
|
||||
|
||||
debugger = GetGlobalDebugger()
|
||||
|
||||
if debugger:
|
||||
debugger.trace_dispatch = None
|
||||
|
||||
debugger.SetTraceForFrameAndParents(GetFrame(), False)
|
||||
|
||||
debugger.exiting()
|
||||
|
||||
killAllPydevThreads()
|
||||
|
||||
connected = False
|
||||
|
||||
class Dispatcher(object):
|
||||
def __init__(self):
|
||||
self.port = None
|
||||
|
||||
@@ -171,7 +171,11 @@ def varToXML(val, name, doTrim=True):
|
||||
except:
|
||||
value = 'Unable to get repr for %s' % v.__class__
|
||||
|
||||
xml = '<var name="%s" type="%s"' % (makeValidXmlValue(quote(name, '/>_= ')), makeValidXmlValue(typeName))
|
||||
try:
|
||||
name = quote(name, '/>_= ') #TODO: Fix PY-5834 without using quote
|
||||
except:
|
||||
pass
|
||||
xml = '<var name="%s" type="%s"' % (makeValidXmlValue(name), makeValidXmlValue(typeName))
|
||||
|
||||
if value:
|
||||
#cannot be too big... communication may not handle it.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.jetbrains.python.console.pydev;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.util.net.NetUtils;
|
||||
import org.apache.xmlrpc.*;
|
||||
|
||||
@@ -47,26 +48,6 @@ public class PydevXmlRpcClient implements IPydevXmlRpcClient {
|
||||
|
||||
String hostname = NetUtils.getLocalHostString();
|
||||
|
||||
//try {
|
||||
// Socket s = new Socket(hostname, port);
|
||||
// PrintWriter p = new PrintWriter(s.getOutputStream());
|
||||
// p.println("Hi there");
|
||||
// p.flush();
|
||||
// Scanner sc = new Scanner(s.getInputStream());
|
||||
// try {
|
||||
// Thread.sleep(1000);
|
||||
// String line = sc.nextLine();
|
||||
// System.out.println(line);
|
||||
// }
|
||||
// catch (Exception e) {
|
||||
// }
|
||||
// s.close();
|
||||
//}
|
||||
//catch (IOException e) {
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
URL url = new URL("http://" + hostname + ':' + port + "/RPC2");
|
||||
|
||||
XmlRpc.setDefaultInputEncoding("UTF8"); //eventhough it uses UTF anyway
|
||||
|
||||
@@ -316,44 +316,46 @@ public class PydevConsoleRunner extends AbstractConsoleRunnerWithHistory<PythonC
|
||||
private static Pair<Integer, Integer> getRemotePortsFromProcess(RemoteSshProcess process) throws ExecutionException {
|
||||
Scanner s = new Scanner(process.getInputStream());
|
||||
|
||||
return Pair.create(readInt(s, process), readInt(s, process));
|
||||
}
|
||||
|
||||
private static int readInt(Scanner s, Process process) throws ExecutionException {
|
||||
long started = System.currentTimeMillis();
|
||||
|
||||
while (System.currentTimeMillis() - started < PORTS_WAITING_TIMEOUT) {
|
||||
try {
|
||||
int port = s.nextInt();
|
||||
int port2 = s.nextInt();
|
||||
|
||||
return Pair.create(port, port2);
|
||||
}
|
||||
catch (Exception e) {
|
||||
if (s.hasNextLine()) {
|
||||
String line = s.nextLine();
|
||||
try {
|
||||
Thread.sleep(200);
|
||||
return Integer.parseInt(line);
|
||||
}
|
||||
catch (InterruptedException e1) {
|
||||
catch (NumberFormatException e) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
if (process.exitValue() != 0) {
|
||||
String error;
|
||||
try {
|
||||
error = "Console process terminated with error:\n" + StreamUtil.readText(process.getErrorStream());
|
||||
}
|
||||
catch (Exception e) {
|
||||
error = "Console process terminated with exit code " + process.exitValue();
|
||||
}
|
||||
throw new ExecutionException(error);
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
|
||||
Thread.sleep(200);
|
||||
}
|
||||
catch (IllegalThreadStateException e) {
|
||||
//continue
|
||||
catch (InterruptedException e1) {
|
||||
}
|
||||
|
||||
if (process.exitValue() != 0) {
|
||||
String error;
|
||||
try {
|
||||
error = "Console process terminated with error:\n" + StreamUtil.readText(process.getErrorStream());
|
||||
}
|
||||
catch (Exception e) {
|
||||
error = "Console process terminated with exit code " + process.exitValue();
|
||||
}
|
||||
throw new ExecutionException(error);
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
throw new ExecutionException("Couldn't get remote ports for console connection.");
|
||||
throw new ExecutionException("Couldn't read integer value from stream");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -682,7 +684,7 @@ public class PydevConsoleRunner extends AbstractConsoleRunnerWithHistory<PythonC
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
mySelected = state;
|
||||
|
||||
|
||||
if (mySelected) {
|
||||
getConsoleView().showVariables(myPydevConsoleCommunication);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user