M PyShell.py
M rpc.py

SF Bug 629987: Idle not printing prompts following SyntaxError
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index ad8263d..3fc814b 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -1,6 +1,7 @@
 #! /usr/bin/env python
 
 import os
+import os.path
 import sys
 import string
 import getopt
@@ -24,7 +25,6 @@
 from OutputWindow import OutputWindow
 from configHandler import idleConf
 import idlever
-import os.path
 
 import rpc
 import RemoteDebugger
@@ -417,6 +417,7 @@
         except (OverflowError, SyntaxError):
             self.tkconsole.resetoutput()
             InteractiveInterpreter.showsyntaxerror(self, filename)
+            self.tkconsole.showprompt()
         else:
             self.runcode(code)
 
@@ -458,23 +459,24 @@
         """
         text = self.tkconsole.text
         stuff = self.unpackerror()
-        if not stuff:
+        if stuff:
+            msg, lineno, offset, line = stuff
+            if lineno == 1:
+                pos = "iomark + %d chars" % (offset-1)
+            else:
+                pos = "iomark linestart + %d lines + %d chars" % \
+                      (lineno-1, offset-1)
+            text.tag_add("ERROR", pos)
+            text.see(pos)
+            char = text.get(pos)
+            if char and char in IDENTCHARS:
+                text.tag_add("ERROR", pos + " wordstart", pos)
+            self.tkconsole.resetoutput()
+            self.write("SyntaxError: %s\n" % str(msg))
+        else:
             self.tkconsole.resetoutput()
             InteractiveInterpreter.showsyntaxerror(self, filename)
-            return
-        msg, lineno, offset, line = stuff
-        if lineno == 1:
-            pos = "iomark + %d chars" % (offset-1)
-        else:
-            pos = "iomark linestart + %d lines + %d chars" % (lineno-1,
-                                                              offset-1)
-        text.tag_add("ERROR", pos)
-        text.see(pos)
-        char = text.get(pos)
-        if char and char in IDENTCHARS:
-            text.tag_add("ERROR", pos + " wordstart", pos)
-        self.tkconsole.resetoutput()
-        self.write("SyntaxError: %s\n" % str(msg))
+        self.tkconsole.showprompt()
 
     def unpackerror(self):
         type, value, tb = sys.exc_info()
diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py
index eeb1b4e..4bbf0bb 100644
--- a/Lib/idlelib/rpc.py
+++ b/Lib/idlelib/rpc.py
@@ -90,7 +90,7 @@
 
 class SocketIO:
 
-    debugging = 0
+    debugging = False
 
     def __init__(self, sock, objtable=None, debugging=None):
         self.mainthread = threading.currentThread()
@@ -189,6 +189,7 @@
 
     def asyncreturn(self, seq):
         response = self.getresponse(seq)
+        self.debug("asyncreturn:", response)
         return self.decoderesponse(response)
 
     def decoderesponse(self, response):