If we're in the current input and there's only whitespace beyond the
cursor, erase that whitespace first.  This avoids a particularly
confusing case where hitting Return at the end of the command didn't
do what it was expected to do -- because it wasn't considered to be at
the end of the command.  Now it is.
diff --git a/Tools/idle/PyShell.py b/Tools/idle/PyShell.py
index 1e2f1ae..6a4712e 100644
--- a/Tools/idle/PyShell.py
+++ b/Tools/idle/PyShell.py
@@ -527,6 +527,11 @@
             # No stdin mark -- just get the current line
             self.recall(self.text.get("insert linestart", "insert lineend"))
             return "break"
+        # If we're in the current input and there's only whitespace
+        # beyond the cursor, erase that whitespace first
+        s = self.text.get("insert", "end-1c")
+        if s and not string.strip(s):
+            self.text.delete("insert", "end-1c")
         # If we're in the current input before its last line,
         # insert a newline right at the insert point
         if self.text.compare("insert", "<", "end-1c linestart"):