diff --git a/Lib/idlelib/Bindings.py b/Lib/idlelib/Bindings.py
index 1bb926d..7baa913 100644
--- a/Lib/idlelib/Bindings.py
+++ b/Lib/idlelib/Bindings.py
@@ -50,6 +50,11 @@
    ('!_Debugger', '<<toggle-debugger>>'),
    ('!_Auto-open stack viewer', '<<toggle-jit-stack-viewer>>' ),
   ]),
+# ('settings', [
+#   ('_Configure Idle...', '<<open-config-dialog>>'),
+#   None,
+#   ('Revert to _Default Settings', '<<revert-all-settings>>'),
+#  ]),
  ('help', [
    ('_IDLE Help...', '<<help>>'),
    ('Python _Documentation...', '<<python-docs>>'),
diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py
index ed90d27..2fe1810 100644
--- a/Lib/idlelib/EditorWindow.py
+++ b/Lib/idlelib/EditorWindow.py
@@ -17,7 +17,7 @@
 import idlever
 import WindowList
 from IdleConf import idleconf
-import aboutDialog, textView
+import aboutDialog, textView, configDialog
 
 # The default tab setting for a Text widget, in average-width characters.
 TK_TABWIDTH_DEFAULT = 8
@@ -123,6 +123,7 @@
         text.bind("<<view-readme>>", self.view_readme)
         text.bind("<<python-docs>>", self.python_docs)
         text.bind("<<about-idle>>", self.about_dialog)
+        text.bind("<<open-config-dialog>>", self.config_dialog)
         text.bind("<<open-module>>", self.open_module)
         text.bind("<<do-nothing>>", lambda event: "break")
         text.bind("<<select-all>>", self.select_all)
@@ -220,6 +221,7 @@
         ("edit", "_Edit"),
         ("format", "F_ormat"),
         ("run", "_Run"),
+        #("settings", "_Settings"),
         ("windows", "_Windows"),
         ("help", "_Help"),
     ]
@@ -278,6 +280,9 @@
     def about_dialog(self, event=None):
         aboutDialog.AboutDialog(self.top,'About IDLEfork')
         
+    def config_dialog(self, event=None):
+        configDialog.ConfigDialog(self.top,'Settings')
+        
     def good_advice(self, event=None):
         tkMessageBox.showinfo('Advice', "Don't Panic!", master=self.text)
 
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index f349bd6..5037806 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -328,7 +328,7 @@
 
     # Override menu bar specs
     menu_specs = PyShellEditorWindow.menu_specs[:]
-    menu_specs.insert(len(menu_specs)-2, ("debug", "_Debug"))
+    menu_specs.insert(len(menu_specs)-3, ("debug", "_Debug"))
 
     # New classes
     from IdleHistory import History
diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py
index c5953af..384f1b0 100644
--- a/Lib/idlelib/configDialog.py
+++ b/Lib/idlelib/configDialog.py
@@ -17,10 +17,7 @@
     """
     configuration dialog for idle
     """ 
-    def __init__(self,parent,title,configDict):
-        """
-        configDict - dictionary of configuration items
-        """
+    def __init__(self,parent,title):
         Toplevel.__init__(self, parent)
         self.configure(borderwidth=5)
         self.geometry("+%d+%d" % (parent.winfo_rootx()+20,
@@ -160,6 +157,18 @@
             self.radioFg.config(state=NORMAL)
             self.radioBg.config(state=NORMAL)
             self.fgHilite.set(1) #default to setting foreground attribute
+        self.SetColourSample()
+    
+    def SetColourSampleBinding(self,*args):
+        self.SetColourSample()
+        
+    def SetColourSample(self):
+        #set the colour smaple area
+        tag=self.themeElements[self.highlightTarget.get()][0]
+        if self.fgHilite.get(): plane='foreground'
+        else: plane='background'
+        colour=self.textHighlightSample.tag_cget(tag,plane)
+        self.frameColourSet.config(bg=colour)
     
     def CreateWidgets(self):
         self.framePages = Frame(self)
@@ -175,7 +184,7 @@
         self.buttonCancel = Button(frameActionButtons,text='Cancel',
                 command=self.Cancel,takefocus=FALSE)
         #page buttons
-        self.pageNum=IntVar()
+        self.pageNum=IntVar(self)
         self.pageNum.set(0)
         pageButtonNames=('Fonts/Tabs','Highlighting','Keys','General')
         self.pageButtons=[]
@@ -211,11 +220,11 @@
         
     def CreatePageFontTab(self):
         #tkVars
-        self.fontSize=StringVar()
-        self.fontBold=StringVar()
-        self.spaceNum=IntVar()
-        self.tabCols=IntVar()
-        self.indentType=IntVar() 
+        self.fontSize=StringVar(self)
+        self.fontBold=StringVar(self)
+        self.spaceNum=IntVar(self)
+        self.tabCols=IntVar(self)
+        self.indentType=IntVar(self) 
         self.editFont=tkFont.Font(self,('courier',12,'normal'))
         ##widget creation
         #body frame
@@ -295,13 +304,13 @@
         return frame
 
     def CreatePageHighlight(self):
-        self.builtinTheme=StringVar()
-        self.customTheme=StringVar()
-        self.fgHilite=IntVar()
-        self.colour=StringVar()
-        self.fontName=StringVar()
-        self.themeIsBuiltin=IntVar() 
-        self.highlightTarget=StringVar()
+        self.builtinTheme=StringVar(self)
+        self.customTheme=StringVar(self)
+        self.fgHilite=IntVar(self)
+        self.colour=StringVar(self)
+        self.fontName=StringVar(self)
+        self.themeIsBuiltin=IntVar(self) 
+        self.highlightTarget=StringVar(self)
         self.highlightTarget.trace_variable('w',self.SetHighlightTargetBinding)
         ##widget creation
         #body frame
@@ -340,9 +349,9 @@
         self.optMenuHighlightTarget=DynOptionMenu(self.frameColourSet,
             self.highlightTarget,None,highlightthickness=0)#,command=self.SetHighlightTargetBinding
         self.radioFg=Radiobutton(frameFgBg,variable=self.fgHilite,
-            value=1,text='Foreground')#,command=self.SetFgBg
+            value=1,text='Foreground',command=self.SetColourSampleBinding)
         self.radioBg=Radiobutton(frameFgBg,variable=self.fgHilite,
-            value=0,text='Background')#,command=self.SetFgBg
+            value=0,text='Background',command=self.SetColourSampleBinding)
         self.fgHilite.set(1)
         buttonSaveCustomTheme=Button(frameCustom, 
             text='Save as a Custom Theme')
@@ -385,14 +394,14 @@
 
     def CreatePageKeys(self):
         #tkVars
-        self.bindingTarget=StringVar()
-        self.builtinKeys=StringVar()
-        self.customKeys=StringVar()
-        self.keyChars=StringVar()
-        self.keyCtrl=StringVar()
-        self.keyAlt=StringVar()
-        self.keyShift=StringVar()
-        self.keysAreDefault=IntVar() 
+        self.bindingTarget=StringVar(self)
+        self.builtinKeys=StringVar(self)
+        self.customKeys=StringVar(self)
+        self.keyChars=StringVar(self)
+        self.keyCtrl=StringVar(self)
+        self.keyAlt=StringVar(self)
+        self.keyShift=StringVar(self)
+        self.keysAreDefault=IntVar(self) 
         ##widget creation
         #body frame
         frame=Frame(self.framePages,borderwidth=2,relief=RAISED)
@@ -460,10 +469,10 @@
 
     def CreatePageGeneral(self):
         #tkVars        
-        self.runType=IntVar()       
-        self.winWidth=StringVar()       
-        self.winHeight=StringVar()
-        self.extState=IntVar()       
+        self.runType=IntVar(self)       
+        self.winWidth=StringVar(self)       
+        self.winHeight=StringVar(self)
+        self.extState=IntVar(self)       
         #widget creation
         #body
         frame=Frame(self.framePages,borderwidth=2,relief=RAISED)
@@ -663,5 +672,5 @@
     #test the dialog
     root=Tk()
     Button(root,text='Dialog',
-            command=lambda:ConfigDialog(root,'Settings',None)).pack()
+            command=lambda:ConfigDialog(root,'Settings')).pack()
     root.mainloop()
