diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py
index a7aa185..c8b0d41 100644
--- a/Lib/idlelib/EditorWindow.py
+++ b/Lib/idlelib/EditorWindow.py
@@ -151,10 +151,8 @@
             text.bind("<<open-path-browser>>", self.open_path_browser)
 
         self.set_status_bar()
-        
         vbar['command'] = text.yview
         vbar.pack(side=RIGHT, fill=Y)
-
         text['yscrollcommand'] = vbar.set
         fontWeight='normal'
         if idleConf.GetOption('main','EditorWindow','font-bold',type='bool'):
@@ -168,30 +166,34 @@
 
         self.per = per = self.Percolator(text)
         if self.ispythonsource(filename):
-            self.color = color = self.ColorDelegator(); per.insertfilter(color)
+            self.color = color = self.ColorDelegator()
+            per.insertfilter(color)
             ##print "Initial colorizer"
         else:
             ##print "No initial colorizer"
             self.color = None
-        self.undo = undo = self.UndoDelegator(); per.insertfilter(undo)
+
+        self.undo = undo = self.UndoDelegator()
+        per.insertfilter(undo)
+        text.undo_block_start = undo.undo_block_start
+        text.undo_block_stop = undo.undo_block_stop
+        undo.set_saved_change_hook(self.saved_change_hook)
+
+        # IOBinding implements file I/O and printing functionality
         self.io = io = self.IOBinding(self)
+        io.set_filename_change_hook(self.filename_change_hook)
+
         #create the Recent Files submenu
         self.menuRecentFiles=Menu(self.menubar)
         self.menudict['file'].insert_cascade(3,label='Recent Files',
                 underline=0,menu=self.menuRecentFiles)
         self.UpdateRecentFilesList()
 
-        text.undo_block_start = undo.undo_block_start
-        text.undo_block_stop = undo.undo_block_stop
-        undo.set_saved_change_hook(self.saved_change_hook)
-        io.set_filename_change_hook(self.filename_change_hook)
-
         if filename:
             if os.path.exists(filename):
                 io.loadfile(filename)
             else:
                 io.set_filename(filename)
-
         self.saved_change_hook()
 
         self.load_extensions()
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index 4771d2e..f2ac36d 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -450,9 +450,15 @@
     ColorDelegator = ModifiedColorDelegator
     UndoDelegator = ModifiedUndoDelegator
 
-    # Override menu bar specs
-    menu_specs = PyShellEditorWindow.menu_specs[:]
-    menu_specs.insert(len(menu_specs)-3, ("debug", "_Debug"))
+    # Override menus: Run and Format not desired in shell; add Debug
+    menu_specs = [
+        ("file", "_File"),
+        ("edit", "_Edit"),
+        ("debug", "_Debug"),
+        ("settings", "_Settings"),
+        ("windows", "_Windows"),
+        ("help", "_Help"),
+    ]
 
     # New classes
     from IdleHistory import History
@@ -825,6 +831,7 @@
         self.console.write(s)
         self.text.mark_set("insert", "end-1c")
         self.set_line_and_column()
+        self.io.reset_undo()
 
     def resetoutput(self):
         source = self.text.get("iomark", "end-1c")
