Allow interrupt only when executing user code in subprocess

Patch 1225 Tal Einat modified from IDLE-Spoon.
This commit is contained in:
Kurt B. Kaiser 2007-10-09 19:31:30 +00:00
parent e7f4d84830
commit c8f65e69da
2 changed files with 13 additions and 3 deletions

View file

@ -38,10 +38,11 @@ else:
# Thread shared globals: Establish a queue between a subthread (which handles
# the socket) and the main thread (which runs user code), plus global
# completion and exit flags:
# completion, exit and interruptable (the main thread) flags:
exit_now = False
quitting = False
interruptable = False
def main(del_exitfunc=False):
"""Start the Python execution server in a subprocess
@ -280,9 +281,14 @@ class Executive(object):
self.autocomplete = AutoComplete.AutoComplete()
def runcode(self, code):
global interruptable
try:
self.usr_exc_info = None
exec code in self.locals
interruptable = True
try:
exec code in self.locals
finally:
interruptable = False
except:
self.usr_exc_info = sys.exc_info()
if quitting:
@ -296,7 +302,8 @@ class Executive(object):
flush_stdout()
def interrupt_the_server(self):
thread.interrupt_main()
if interruptable:
thread.interrupt_main()
def start_the_debugger(self, gui_adap_oid):
return RemoteDebugger.start_debugger(self.rpchandler, gui_adap_oid)