summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/PyShell.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/idlelib/PyShell.py')
-rw-r--r--Lib/idlelib/PyShell.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index 9c3aa50..7ce5244 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -289,6 +289,14 @@ class ModifiedInterpreter(InteractiveInterpreter):
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 @@ class ModifiedInterpreter(InteractiveInterpreter):
"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 @@ class ModifiedInterpreter(InteractiveInterpreter):
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 @@ class PyShell(OutputWindow):
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 @@ class PyShell(OutputWindow):
return line
def isatty(self):
- return 1
+ return True
def cancel_callback(self, event):
try:
@@ -735,7 +745,7 @@ class PyShell(OutputWindow):
# 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 @@ class PseudoFile:
pass
def isatty(self):
- return 1
+ return True
usage_msg = """\