diff Lib/idlelib/PyShell.py @ 18560:12e7ad108229 legacy-trunk

cvs-py-rel2_1 (Rev 1.29 - 1.33) merge Merged the following py-cvs revs without conflict: 1.29 Reduce copyright text output at startup 1.30 Delay setting sys.args until Tkinter is fully initialized 1.31 Whitespace normalization 1.32 Turn syntax warning into error when interactive 1.33 Fix warning initialization bug Note that module is extensively modified wrt py-cvs
author Kurt B. Kaiser <kbk@shore.net>
date Sat, 14 Jul 2001 00:13:28 +0000
parents 30713d5288df
children fe44428f9774
line wrap: on
line diff
--- a/Lib/idlelib/PyShell.py	Fri Jul 13 22:28:36 2001 +0000
+++ b/Lib/idlelib/PyShell.py	Sat Jul 14 00:13:28 2001 +0000
@@ -27,6 +27,7 @@
 import getopt
 import re
 import protocol
+import warnings
 
 import linecache
 from code import InteractiveInterpreter
@@ -146,7 +147,7 @@
         "stderr": cconf.getcolor("stderr"),
         "console": cconf.getcolor("console"),
         "ERROR": cconf.getcolor("ERROR"),
-	None: cconf.getcolor("normal"),
+        None: cconf.getcolor("normal"),
     })
 
 
@@ -178,6 +179,7 @@
         self.tkconsole = tkconsole
         locals = sys.modules['__main__'].__dict__
         InteractiveInterpreter.__init__(self, locals=locals)
+        self.save_warnings_filters = None
 
     gid = 0
 
@@ -202,7 +204,14 @@
         # Extend base class to stuff the source in the line cache first
         filename = self.stuffsource(source)
         self.more = 0
-        return InteractiveInterpreter.runsource(self, source, filename)
+        self.save_warnings_filters = warnings.filters[:]
+        warnings.filterwarnings(action="error", category=SyntaxWarning)
+        try:
+            return InteractiveInterpreter.runsource(self, source, filename)
+        finally:
+            if self.save_warnings_filters is not None:
+                warnings.filters[:] = self.save_warnings_filters
+                self.save_warnings_filters = None
 
     def stuffsource(self, source):
         # Stuff source in the filename cache
@@ -271,6 +280,9 @@
 
     def runcode(self, code):
         # Override base class method
+        if self.save_warnings_filters is not None:
+            warnings.filters[:] = self.save_warnings_filters
+            self.save_warnings_filters = None
         debugger = self.debugger
         try:
             self.tkconsole.beginexecuting()
@@ -451,10 +463,13 @@
     def short_title(self):
         return self.shell_title
 
+    COPYRIGHT = \
+              'Type "copyright", "credits" or "license" for more information.'
+
     def begin(self):
         self.resetoutput()
         self.write("Python %s on %s\n%s\nIDLE %s -- press F1 for help\n" %
-                   (sys.version, sys.platform, sys.copyright,
+                   (sys.version, sys.platform, self.COPYRIGHT,
                     idlever.IDLE_VERSION))
         try:
             sys.ps1
@@ -790,12 +805,6 @@
     
         if noshell: edit=1
     
-        if not edit:
-            if cmd:
-                sys.argv = ["-c"] + args
-            else:
-                sys.argv = args or [""]
-    
         for i in range(len(sys.path)):
             sys.path[i] = os.path.abspath(sys.path[i])
     
@@ -813,7 +822,7 @@
                 sys.path.insert(0, dir)
 
         global flist, root
-        root = Tk()
+        root = Tk(className="Idle")
         fixwordbreaks(root)
         root.withdraw()
         flist = PyShellFileList(root)
@@ -823,7 +832,12 @@
                 flist.open(filename)
             if not args:
                 flist.new()
-    
+        else:
+            if cmd:
+                sys.argv = ["-c"] + args
+            else:
+                sys.argv = args or [""]
+
         #dbg=OnDemandOutputWindow(flist)
         #dbg.set_title('Internal IDLE Problem')
         #sys.stdout = PseudoFile(dbg,['stdout'])