diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py
index 8a2109d..99f40a7 100644
--- a/Lib/idlelib/EditorWindow.py
+++ b/Lib/idlelib/EditorWindow.py
@@ -159,8 +159,12 @@
         vbar.pack(side=RIGHT, fill=Y)
 
         text['yscrollcommand'] = vbar.set
+        fontWeight='normal'
+        if idleConf.GetOption('main','EditorWindow','font-bold',type='bool'):
+            fontWeight='bold'
         text.config(font=(idleConf.GetOption('main','EditorWindow','font'),
-                idleConf.GetOption('main','EditorWindow','font-size')))
+                idleConf.GetOption('main','EditorWindow','font-size'),
+                fontWeight))
         text_frame.pack(side=LEFT, fill=BOTH, expand=1)
         text.pack(side=TOP, fill=BOTH, expand=1)
         text.focus_set()
@@ -478,6 +482,16 @@
             self.color = self.ColorDelegator()
             self.per.insertfilter(self.color)
 
+    def ResetFont(self):
+        #this function is called from configDialog.py
+        #to update the text widgets' font if it is changed
+        fontWeight='normal'
+        if idleConf.GetOption('main','EditorWindow','font-bold',type='bool'):
+            fontWeight='bold'
+        self.text.config(font=(idleConf.GetOption('main','EditorWindow','font'),
+                idleConf.GetOption('main','EditorWindow','font-size'),
+                fontWeight))
+
     def saved_change_hook(self):
         short = self.short_title()
         long = self.long_title()
diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py
index 4f85cc0..8367fe2 100644
--- a/Lib/idlelib/configDialog.py
+++ b/Lib/idlelib/configDialog.py
@@ -939,7 +939,6 @@
             type='bool',default=1))
         ##currently set theme
         currentOption=idleConf.CurrentTheme()
-        print 'current option',currentOption
         ##load available theme option menus
         if self.themeIsBuiltin.get(): #default theme selected
             itemList=idleConf.GetSectionList('default','highlight')
@@ -1096,6 +1095,7 @@
         winInstances=self.parent.instanceDict.keys()
         for instance in winInstances:
             instance.ResetColorizer()
+            instance.ResetFont()
         
     def Cancel(self):
         self.destroy()
