This commit is contained in:
Brett Cannon 2012-01-31 14:58:07 -05:00
commit cdf1121076
5 changed files with 24 additions and 13 deletions

View File

@ -411,11 +411,11 @@ class ModifiedInterpreter(InteractiveInterpreter):
self.rpcclt.register("flist", self.tkconsole.flist) self.rpcclt.register("flist", self.tkconsole.flist)
self.rpcclt.register("linecache", linecache) self.rpcclt.register("linecache", linecache)
self.rpcclt.register("interp", self) self.rpcclt.register("interp", self)
self.transfer_path() self.transfer_path(with_cwd=True)
self.poll_subprocess() self.poll_subprocess()
return self.rpcclt return self.rpcclt
def restart_subprocess(self): def restart_subprocess(self, with_cwd=False):
if self.restarting: if self.restarting:
return self.rpcclt return self.rpcclt
self.restarting = True self.restarting = True
@ -439,7 +439,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
except socket.timeout as err: except socket.timeout as err:
self.display_no_subprocess_error() self.display_no_subprocess_error()
return None return None
self.transfer_path() self.transfer_path(with_cwd=with_cwd)
# annotate restart in shell window and mark it # annotate restart in shell window and mark it
console.text.delete("iomark", "end-1c") console.text.delete("iomark", "end-1c")
if was_executing: if was_executing:
@ -492,12 +492,18 @@ class ModifiedInterpreter(InteractiveInterpreter):
except OSError: except OSError:
return return
def transfer_path(self): def transfer_path(self, with_cwd=False):
if with_cwd: # Issue 13506
path = [''] # include Current Working Directory
path.extend(sys.path)
else:
path = sys.path
self.runcommand("""if 1: self.runcommand("""if 1:
import sys as _sys import sys as _sys
_sys.path = %r _sys.path = %r
del _sys del _sys
\n""" % (sys.path,)) \n""" % (path,))
active_seq = None active_seq = None
@ -1191,7 +1197,8 @@ class PyShell(OutputWindow):
self.text.see("restart") self.text.see("restart")
def restart_shell(self, event=None): def restart_shell(self, event=None):
self.interp.restart_subprocess() "Callback for Run/Restart Shell Cntl-F6"
self.interp.restart_subprocess(with_cwd=True)
def showprompt(self): def showprompt(self):
self.resetoutput() self.resetoutput()

View File

@ -144,10 +144,9 @@ class ScriptBinding:
return 'break' return 'break'
if not self.tabnanny(filename): if not self.tabnanny(filename):
return 'break' return 'break'
shell = self.shell interp = self.shell.interp
interp = shell.interp
if PyShell.use_subprocess: if PyShell.use_subprocess:
shell.restart_shell() interp.restart_subprocess(with_cwd=False)
dirname = os.path.dirname(filename) dirname = os.path.dirname(filename)
# XXX Too often this discards arguments the user just set... # XXX Too often this discards arguments the user just set...
interp.runcommand("""if 1: interp.runcommand("""if 1:

View File

@ -880,6 +880,7 @@ Mark Sapiro
Ty Sarna Ty Sarna
Ben Sayer Ben Sayer
sbt sbt
Marco Scataglini
Andrew Schaaf Andrew Schaaf
Michael Scharf Michael Scharf
Andreas Schawo Andreas Schawo

View File

@ -463,6 +463,9 @@ Core and Builtins
Library Library
------- -------
- Issue #13506: Add '' to path for IDLE Shell when started and restarted with Restart Shell.
Original patches by Marco Scataglini and Roger Serwy.
- Issue #8828: Add new function os.replace(), for cross-platform renaming - Issue #8828: Add new function os.replace(), for cross-platform renaming
with overwriting. with overwriting.

View File

@ -728,14 +728,15 @@ read_directory(PyObject *archive)
PyObject *files = NULL; PyObject *files = NULL;
FILE *fp; FILE *fp;
unsigned short flags; unsigned short flags;
long compress, crc, data_size, file_size, file_offset, date, time; short compress, time, date, name_size;
long header_offset, name_size, header_size, header_position; long crc, data_size, file_size, header_size;
Py_ssize_t file_offset, header_position, header_offset;
long l, count; long l, count;
Py_ssize_t i; Py_ssize_t i;
char name[MAXPATHLEN + 5]; char name[MAXPATHLEN + 5];
PyObject *nameobj = NULL; PyObject *nameobj = NULL;
char *p, endof_central_dir[22]; char *p, endof_central_dir[22];
long arc_offset; /* offset from beginning of file to start of zip-archive */ Py_ssize_t arc_offset; /* Absolute offset to start of the zip-archive. */
PyObject *path; PyObject *path;
const char *charset; const char *charset;
int bootstrap; int bootstrap;
@ -835,7 +836,7 @@ read_directory(PyObject *archive)
path = PyUnicode_FromFormat("%U%c%U", archive, SEP, nameobj); path = PyUnicode_FromFormat("%U%c%U", archive, SEP, nameobj);
if (path == NULL) if (path == NULL)
goto error; goto error;
t = Py_BuildValue("Niiiiiii", path, compress, data_size, t = Py_BuildValue("Nhllnhhl", path, compress, data_size,
file_size, file_offset, time, date, crc); file_size, file_offset, time, date, crc);
if (t == NULL) if (t == NULL)
goto error; goto error;