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