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()