diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py
index f039503..7c209e7 100644
--- a/Lib/idlelib/EditorWindow.py
+++ b/Lib/idlelib/EditorWindow.py
@@ -139,9 +139,7 @@
         if self.ispythonsource(filename):
             self.color = color = self.ColorDelegator()
             per.insertfilter(color)
-            ##print "Initial colorizer"
         else:
-            ##print "No initial colorizer"
             self.color = None
 
         self.undo = undo = self.UndoDelegator()
@@ -459,7 +457,6 @@
     def addcolorizer(self):
         if self.color:
             return
-        ##print "Add colorizer"
         self.per.removefilter(self.undo)
         self.color = self.ColorDelegator()
         self.per.insertfilter(self.color)
@@ -468,7 +465,6 @@
     def rmcolorizer(self):
         if not self.color:
             return
-        ##print "Remove colorizer"
         self.per.removefilter(self.undo)
         self.per.removefilter(self.color)
         self.color = None
@@ -759,7 +755,6 @@
         text = self.text
         text.keydefs = keydefs
         for event, keylist in keydefs.items():
-            ##print>>sys.__stderr__, "event, list: ", event, keylist
             if keylist:
                 apply(text.event_add, (event,) + tuple(keylist))
 
@@ -772,7 +767,6 @@
             defs = self.Bindings.menudefs
         if keydefs is None:
             keydefs = self.Bindings.default_keydefs
-        ##print>>sys.__stderr__, "*keydefs: " , keydefs
         menudict = self.menudict
         text = self.text
         for mname, itemlist in defs:
@@ -788,7 +782,6 @@
                     if checkbutton:
                         label = label[1:]
                     underline, label = prepstr(label)
-                    ##print>>sys.__stderr__, "*Event: " , event
                     accelerator = get_accelerator(keydefs, event)
                     def command(text=text, event=event):
                         text.event_generate(event)
@@ -798,9 +791,6 @@
                             command=command, accelerator=accelerator,
                             variable=var)
                     else:
-                        ##print>>sys.__stderr__, "label, ul, cmd, accel: ",
-                        ##                       label, underline, command,
-                        ##                       accelerator
                         menu.add_command(label=label, underline=underline,
                                          command=command,
                                          accelerator=accelerator)
