Patch #1540892: site.py Quitter() class attempts to close sys.stdin
before raising SystemExit, allowing IDLE to honor quit() and exit(). M Lib/site.py M Lib/idlelib/PyShell.py M Lib/idlelib/CREDITS.txt M Lib/idlelib/NEWS.txt M Misc/NEWS
This commit is contained in:
parent
798ed8f076
commit
d112bc7958
|
@ -24,8 +24,8 @@ Noam Raphael (Code Context, Call Tips, many other patches), and Chui Tey (RPC
|
|||
integration, debugger integration and persistent breakpoints).
|
||||
|
||||
Scott David Daniels, Tal Einat, Hernan Foffani, Christos Georgiou,
|
||||
Martin v. Löwis, Jason Orendorff, Josh Robb, Nigel Rowe, Bruce Sherwood,
|
||||
and Jeff Shute have submitted useful patches. Thanks, guys!
|
||||
Jim Jewett, Martin v. Löwis, Jason Orendorff, Josh Robb, Nigel Rowe,
|
||||
Bruce Sherwood, and Jeff Shute have submitted useful patches. Thanks, guys!
|
||||
|
||||
For additional details refer to NEWS.txt and Changelog.
|
||||
|
||||
|
|
|
@ -3,7 +3,11 @@ What's New in IDLE 1.2c1?
|
|||
|
||||
*Release date: 17-AUG-2006*
|
||||
|
||||
- The 'with' statement is now a Code Context block opener
|
||||
- IDLE honors new quit() and exit() commands from site.py Quitter() object.
|
||||
Patch 1540892, Jim Jewett
|
||||
|
||||
- The 'with' statement is now a Code Context block opener.
|
||||
Patch 1540851, Jim Jewett
|
||||
|
||||
- Retrieval of previous shell command was not always preserving indentation
|
||||
(since 1.2a1) Patch 1528468 Tal Einat.
|
||||
|
|
|
@ -478,9 +478,6 @@ class ModifiedInterpreter(InteractiveInterpreter):
|
|||
import sys as _sys
|
||||
_sys.path = %r
|
||||
del _sys
|
||||
_msg = 'Use File/Exit or your end-of-file key to quit IDLE'
|
||||
__builtins__.quit = __builtins__.exit = _msg
|
||||
del _msg
|
||||
\n""" % (sys.path,))
|
||||
|
||||
active_seq = None
|
||||
|
@ -514,7 +511,10 @@ class ModifiedInterpreter(InteractiveInterpreter):
|
|||
print >>sys.__stderr__, errmsg, what
|
||||
print >>console, errmsg, what
|
||||
# we received a response to the currently active seq number:
|
||||
try:
|
||||
self.tkconsole.endexecuting()
|
||||
except AttributeError: # shell may have closed
|
||||
pass
|
||||
# Reschedule myself
|
||||
if not self.tkconsole.closing:
|
||||
self.tkconsole.text.after(self.tkconsole.pollinterval,
|
||||
|
@ -730,7 +730,10 @@ class ModifiedInterpreter(InteractiveInterpreter):
|
|||
self.tkconsole.endexecuting()
|
||||
finally:
|
||||
if not use_subprocess:
|
||||
try:
|
||||
self.tkconsole.endexecuting()
|
||||
except AttributeError: # shell may have closed
|
||||
pass
|
||||
|
||||
def write(self, s):
|
||||
"Override base class method"
|
||||
|
@ -804,9 +807,6 @@ class PyShell(OutputWindow):
|
|||
#
|
||||
OutputWindow.__init__(self, flist, None, None)
|
||||
#
|
||||
import __builtin__
|
||||
__builtin__.quit = __builtin__.exit = "To exit, type Ctrl-D."
|
||||
#
|
||||
## self.config(usetabs=1, indentwidth=8, context_use_ps1=1)
|
||||
self.usetabs = True
|
||||
# indentwidth must be 8 when using tabs. See note in EditorWindow:
|
||||
|
|
|
@ -242,6 +242,12 @@ def setquit():
|
|||
def __repr__(self):
|
||||
return 'Use %s() or %s to exit' % (self.name, eof)
|
||||
def __call__(self, code=None):
|
||||
# Shells like IDLE catch the SystemExit, but listen when their
|
||||
# stdin wrapper is closed.
|
||||
try:
|
||||
sys.stdin.close()
|
||||
except:
|
||||
pass
|
||||
raise SystemExit(code)
|
||||
__builtin__.quit = Quitter('quit')
|
||||
__builtin__.exit = Quitter('exit')
|
||||
|
|
|
@ -64,6 +64,9 @@ Core and builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Patch #1540892: site.py Quitter() class attempts to close sys.stdin
|
||||
before raising SystemExit, allowing IDLE to honor quit() and exit().
|
||||
|
||||
- Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize.
|
||||
|
||||
- Patch #1536071: trace.py should now find the full module name of a
|
||||
|
|
Loading…
Reference in New Issue