diff Lib/idlelib/PyShell.py @ 25310:eb7b7b719ee5 legacy-trunk

Merge Py Idle changes: Rev 1.35 fdrake Use string.ascii_letters instead of string.letters (SF bug #226706). Move computation of sets of characters out of the body of the function that uses them. Rev 1.36 tim_one Convert a pile of obvious "yes/no" functions to return bool Rev 1.37 (skip, done differently in Idlefork) Rev 1.38 loewis Patch #590913: PEP 263 support. Rev 1.39 loewis Convert characters from the locale's encoding on output. Reject characters outside the locale's encoding on input. Rev 1.40 doerwalter (string methods) Rev 1.41 (skipped, done by GvR in rpc)
author Kurt B. Kaiser <kbk@shore.net>
date Wed, 18 Sep 2002 02:29:59 +0000
parents 4b6185128814
children 7de88cf0783e
line wrap: on
line diff
--- a/Lib/idlelib/PyShell.py	Tue Sep 17 20:58:59 2002 +0000
+++ b/Lib/idlelib/PyShell.py	Wed Sep 18 02:29:59 2002 +0000
@@ -289,6 +289,14 @@
         self.more = 0
         self.save_warnings_filters = warnings.filters[:]
         warnings.filterwarnings(action="error", category=SyntaxWarning)
+        if isinstance(source, types.UnicodeType):
+            import IOBinding
+            try:
+                source = source.encode(IOBinding.encoding)
+            except UnicodeError:
+                self.tkconsole.resetoutput()
+                self.write("Unsupported characters in input")
+                return
         try:
             return InteractiveInterpreter.runsource(self, source, filename)
         finally:
@@ -300,10 +308,12 @@
         "Stuff source in the filename cache"
         filename = "<pyshell#%d>" % self.gid
         self.gid = self.gid + 1
-        lines = string.split(source, "\n")
+        lines = source.split("\n")
         linecache.cache[filename] = len(source)+1, 0, lines, filename
         return filename
-
+    
+    IDENTCHARS = string.ascii_letters + string.digits + "_"
+    
     def showsyntaxerror(self, filename=None):
         """Extend base class method: Add Colorizing
 
@@ -326,7 +336,7 @@
         text.tag_add("ERROR", pos)
         text.see(pos)
         char = text.get(pos)
-        if char and char in string.letters + string.digits + "_":
+        if char and char in IDENTCHARS:
             text.tag_add("ERROR", pos + " wordstart", pos)
         self.tkconsole.resetoutput()
         self.write("SyntaxError: %s\n" % str(msg))
@@ -598,7 +608,7 @@
 
     def ispythonsource(self, filename):
         "Override EditorWindow method: never remove the colorizer"
-        return 1
+        return True
 
     def short_title(self):
         return self.shell_title
@@ -641,7 +651,7 @@
         return line
 
     def isatty(self):
-        return 1
+        return True
 
     def cancel_callback(self, event):
         try:
@@ -735,7 +745,7 @@
         # If we're in the current input and there's only whitespace
         # beyond the cursor, erase that whitespace first
         s = self.text.get("insert", "end-1c")
-        if s and not string.strip(s):
+        if s and not s.strip():
             self.text.delete("insert", "end-1c")
         # If we're in the current input before its last line,
         # insert a newline right at the insert point
@@ -852,7 +862,7 @@
         pass
 
     def isatty(self):
-        return 1
+        return True
 
 
 usage_msg = """\