1. Make the startup more robust by not spawning the subprocess if IDLE
   can't acquire the port to listen on.
2. Shorten the retry and simplify the messages.
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index f3312a8..6048503 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -325,22 +325,19 @@
 
     def start_subprocess(self):
         addr = ("localhost", self.port)
-        self.spawn_subprocess()
         # Idle starts listening for connection on localhost
-        for i in range(6):
+        for i in range(3):
             time.sleep(i)
             try:
                 self.rpcclt = rpc.RPCClient(addr)
                 break
             except socket.error, err:
-                if i < 3:
-                    print>>sys.__stderr__, ". ",
-                else:
-                    print>>sys.__stderr__,"\nIdle socket error: " + err[1]\
+                print>>sys.__stderr__,"Idle socket error: " + err[1]\
                                                     + ", retrying..."
         else:
             display_port_binding_error()
             sys.exit()
+        self.spawn_subprocess()
         # Accept the connection from the Python execution server
         self.rpcclt.accept()
         self.rpcclt.register("stdin", self.tkconsole)