SF 695861
Eliminate extra blank line in shell output.  Caused by stdout not being
flushed
upon completion of subprocess' Executive.runcode() when user code ends by
outputting an unterminated line, e.g. print "test",
diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py
index e2594dd..6ab8044 100644
--- a/Lib/idlelib/run.py
+++ b/Lib/idlelib/run.py
@@ -73,17 +73,27 @@
         try:
             exec code in self.locals
         except:
+            self.flush_stdout()
             efile = sys.stderr
             typ, val, tb = info = sys.exc_info()
             sys.last_type, sys.last_value, sys.last_traceback = info
             tbe = traceback.extract_tb(tb)
-            print >>efile, '\nTraceback (most recent call last):'
+            print >>efile, 'Traceback (most recent call last):'
             exclude = ("run.py", "rpc.py", "RemoteDebugger.py", "bdb.py")
             self.cleanup_traceback(tbe, exclude)
             traceback.print_list(tbe, file=efile)
             lines = traceback.format_exception_only(typ, val)
             for line in lines:
                 print>>efile, line,
+        self.flush_stdout()
+
+    def flush_stdout(self):
+        try:
+            if sys.stdout.softspace:
+                sys.stdout.softspace = 0
+                sys.stdout.write("\n")
+        except AttributeError:
+            pass
 
     def cleanup_traceback(self, tb, exclude):
         "Remove excluded traces from beginning/end of tb; get cached lines"