more on config saving
diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py
index 92f3d9f..b990f23 100644
--- a/Lib/idlelib/configDialog.py
+++ b/Lib/idlelib/configDialog.py
@@ -367,9 +367,11 @@
         self.listExt.bind('<ButtonRelease-1>',self.ExtensionSelected)
         labelExtSetTitle=Label(frameExtSet,text='Settings')
         self.radioEnableExt=Radiobutton(frameExtSet,variable=self.extEnabled,
-            value=1,text="enabled",state=DISABLED)
+            value=1,text="enabled",state=DISABLED,
+            command=self.ExtensionStateToggled)
         self.radioDisableExt=Radiobutton(frameExtSet,variable=self.extEnabled,
-            value=0,text="disabled",state=DISABLED)
+            value=0,text="disabled",state=DISABLED,
+            command=self.ExtensionStateToggled)
         self.buttonExtConfig=Button(frameExtSet,text='Configure',state=DISABLED)
         #widget packing
         #body
@@ -412,60 +414,68 @@
         self.winWidth.trace_variable('w',self.VarChanged_winWidth)
         self.winHeight.trace_variable('w',self.VarChanged_winHeight)
         self.startupEdit.trace_variable('w',self.VarChanged_startupEdit)
-        self.extEnabled.trace_variable('w',self.VarChanged_extEnabled)
     
     def VarChanged_fontSize(self,*params):
         value=self.fontSize.get()
         self.AddChangedItem('main','EditorWindow','font-size',value)
-        print 'fontSize:',value
         
     def VarChanged_fontName(self,*params):
         value=self.fontName.get()
         self.AddChangedItem('main','EditorWindow','font',value)
-        print 'fontName:',value
 
     def VarChanged_fontBold(self,*params):
         value=self.fontBold.get()
         self.AddChangedItem('main','EditorWindow','font-bold',value)
-        print 'fontBold:',value
 
     def VarChanged_indentBySpaces(self,*params):
         value=self.indentBySpaces.get()
         self.AddChangedItem('main','Indent','use-spaces',value)
-        print 'indentBySpaces:',value
 
     def VarChanged_spaceNum(self,*params):
         value=self.spaceNum.get()
         self.AddChangedItem('main','Indent','num-spaces',value)
-        print 'spaceNum:',value
 
     def VarChanged_tabCols(self,*params):
         value=self.tabCols.get()
         self.AddChangedItem('main','Indent','tab-cols',value)
-        print 'tabCols:',value
 
     def VarChanged_colour(self,*params):
+        value=self.colour.get()
+        theme=self.customTheme.get()
+        element=self.themeElements[self.highlightTarget.get()][0]
+        self.AddChangedItem('highlight',theme,element,value)
         print params
-
+        
     def VarChanged_keyBinding(self,*params):
+        value=self.keyBinding.get()
+        keySet=self.customKeys.get()
+        event=self.listBindings.get(ANCHOR).split()[0]
+        self.AddChangedItem('keys',keySet,event,value)
         print params
 
     def VarChanged_winWidth(self,*params):
-        print params
+        value=self.winWidth.get()
+        self.AddChangedItem('main','EditorWindow','width',value)
 
     def VarChanged_winHeight(self,*params):
-        print params
+        value=self.winHeight.get()
+        self.AddChangedItem('main','EditorWindow','height',value)
 
     def VarChanged_startupEdit(self,*params):
-        print params
+        value=self.startupEdit.get()
+        self.AddChangedItem('main','General','editor-on-startup',value)
 
-    def VarChanged_extEnabled(self,*params):
-        print params
+    def ExtensionStateToggled(self):
+        #callback for the extension enable/disable radio buttons
+        value=self.extEnabled.get()
+        extension=self.listExt.get(ANCHOR)
+        self.AddChangedItem('extensions',extension,'enabled',value)
 
     def AddChangedItem(self,type,section,item,value):
         if not self.changedItems[type].has_key(section):
             self.changedItems[type][section]={}    
         self.changedItems[type][section][item]=value
+        print type,section,item,value
     
     def GetDefaultItems(self):
         dItems={'main':{},'highlight':{},'keys':{},'extensions':{}}
@@ -675,8 +685,12 @@
         if newKeys.result: #new keys were specified
             self.listBindings.delete(listIndex)
             self.listBindings.insert(listIndex,bindName+' - '+newKeys.result)
+            self.listBindings.select_set(listIndex)
+            self.listBindings.select_anchor(listIndex)
             self.keyBinding.set(newKeys.result)
-        self.listBindings.select_set(listIndex)
+        else:
+            self.listBindings.select_set(listIndex)
+            self.listBindings.select_anchor(listIndex)
 
     def KeyBindingSelected(self,event):
         self.buttonNewKeys.config(state=NORMAL)