comparison Lib/idlelib/PyShell.py @ 74694:acedd92086c5

Merge 3.2 - Issue #13506: Add '' to path for IDLE Shell when started and restarted with Restart Shell. Original patches by Marco Scataglini and Roger Serwy. Merge 3.2 #13506 Add '' to path for interactive interpreter by adding with_cwd parameter to PyShell.PyShell.transfer_path() and changing elsewhere as needed. Original patches by Marco Scataglini and Roger Serwy.
author Terry Jan Reedy <tjreedy@udel.edu>
date Tue, 31 Jan 2012 02:42:19 -0500
parents ba832d42cd9e 1993aa091d89
children bf31815548c9
comparison
equal deleted inserted replaced
74691:2db416b953e8 74694:acedd92086c5
409 self.rpcclt.register("stdout", self.tkconsole.stdout) 409 self.rpcclt.register("stdout", self.tkconsole.stdout)
410 self.rpcclt.register("stderr", self.tkconsole.stderr) 410 self.rpcclt.register("stderr", self.tkconsole.stderr)
411 self.rpcclt.register("flist", self.tkconsole.flist) 411 self.rpcclt.register("flist", self.tkconsole.flist)
412 self.rpcclt.register("linecache", linecache) 412 self.rpcclt.register("linecache", linecache)
413 self.rpcclt.register("interp", self) 413 self.rpcclt.register("interp", self)
414 self.transfer_path() 414 self.transfer_path(with_cwd=True)
415 self.poll_subprocess() 415 self.poll_subprocess()
416 return self.rpcclt 416 return self.rpcclt
417 417
418 def restart_subprocess(self): 418 def restart_subprocess(self, with_cwd=False):
419 if self.restarting: 419 if self.restarting:
420 return self.rpcclt 420 return self.rpcclt
421 self.restarting = True 421 self.restarting = True
422 # close only the subprocess debugger 422 # close only the subprocess debugger
423 debug = self.getdebugger() 423 debug = self.getdebugger()
437 try: 437 try:
438 self.rpcclt.accept() 438 self.rpcclt.accept()
439 except socket.timeout as err: 439 except socket.timeout as err:
440 self.display_no_subprocess_error() 440 self.display_no_subprocess_error()
441 return None 441 return None
442 self.transfer_path() 442 self.transfer_path(with_cwd=with_cwd)
443 # annotate restart in shell window and mark it 443 # annotate restart in shell window and mark it
444 console.text.delete("iomark", "end-1c") 444 console.text.delete("iomark", "end-1c")
445 if was_executing: 445 if was_executing:
446 console.write('\n') 446 console.write('\n')
447 console.showprompt() 447 console.showprompt()
490 try: 490 try:
491 self.rpcsubproc.wait() 491 self.rpcsubproc.wait()
492 except OSError: 492 except OSError:
493 return 493 return
494 494
495 def transfer_path(self): 495 def transfer_path(self, with_cwd=False):
496 if with_cwd: # Issue 13506
497 path = [''] # include Current Working Directory
498 path.extend(sys.path)
499 else:
500 path = sys.path
501
496 self.runcommand("""if 1: 502 self.runcommand("""if 1:
497 import sys as _sys 503 import sys as _sys
498 _sys.path = %r 504 _sys.path = %r
499 del _sys 505 del _sys
500 \n""" % (sys.path,)) 506 \n""" % (path,))
501 507
502 active_seq = None 508 active_seq = None
503 509
504 def poll_subprocess(self): 510 def poll_subprocess(self):
505 clt = self.rpcclt 511 clt = self.rpcclt
1189 def view_restart_mark(self, event=None): 1195 def view_restart_mark(self, event=None):
1190 self.text.see("iomark") 1196 self.text.see("iomark")
1191 self.text.see("restart") 1197 self.text.see("restart")
1192 1198
1193 def restart_shell(self, event=None): 1199 def restart_shell(self, event=None):
1194 self.interp.restart_subprocess() 1200 "Callback for Run/Restart Shell Cntl-F6"
1201 self.interp.restart_subprocess(with_cwd=True)
1195 1202
1196 def showprompt(self): 1203 def showprompt(self):
1197 self.resetoutput() 1204 self.resetoutput()
1198 try: 1205 try:
1199 s = str(sys.ps1) 1206 s = str(sys.ps1)