From 837d15c5b5deee769079faa94117d8a83adb53ec Mon Sep 17 00:00:00 2001 From: "Kurt B. Kaiser" Date: Wed, 18 Sep 2002 02:29:59 +0000 Subject: [PATCH] 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) --- Lib/idlelib/PyShell.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 9c3aa50a866..7ce52441040 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -289,6 +289,14 @@ def runsource(self, source): 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 @@ def stuffsource(self, source): "Stuff source in the filename cache" filename = "" % 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 @@ def showsyntaxerror(self, filename=None): 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 _close(self): 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 @@ def readline(self): return line def isatty(self): - return 1 + return True def cancel_callback(self, event): try: @@ -735,7 +745,7 @@ def enter_callback(self, event): # 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 @@ def flush(self): pass def isatty(self): - return 1 + return True usage_msg = """\