1. Bug in Patch 805830 fixed by Nigel Rowe
2. Convert 1/0 to True/False
3. Fix a couple of long lines

M ColorDelegator.py
M NEWS.txt
diff --git a/Lib/idlelib/ColorDelegator.py b/Lib/idlelib/ColorDelegator.py
index 250ca94..019e5d4 100644
--- a/Lib/idlelib/ColorDelegator.py
+++ b/Lib/idlelib/ColorDelegator.py
@@ -6,12 +6,7 @@
 from Delegator import Delegator
 from configHandler import idleConf
 
-#$ event <<toggle-auto-coloring>>
-#$ win <Control-slash>
-#$ unix <Control-slash>
-
-DEBUG = 0
-
+DEBUG = False
 
 def any(name, list):
     return "(?P<%s>" % name + "|".join(list) + ")"
@@ -20,14 +15,17 @@
     kw = r"\b" + any("KEYWORD", keyword.kwlist) + r"\b"
     builtinlist = [str(name) for name in dir(__builtin__)
                                         if not name.startswith('_')]
-    builtin = r"([^\\.]\b|^)" + any("BUILTIN", builtinlist) + r"\b"
+    # self.file = file("file") :
+    # 1st 'file' colorized normal, 2nd as builtin, 3rd as comment
+    builtin = r"([^.'\"\\]\b|^)" + any("BUILTIN", builtinlist) + r"\b"
     comment = any("COMMENT", [r"#[^\n]*"])
     sqstring = r"(\b[rR])?'[^'\\\n]*(\\.[^'\\\n]*)*'?"
     dqstring = r'(\b[rR])?"[^"\\\n]*(\\.[^"\\\n]*)*"?'
     sq3string = r"(\b[rR])?'''[^'\\]*((\\.|'(?!''))[^'\\]*)*(''')?"
     dq3string = r'(\b[rR])?"""[^"\\]*((\\.|"(?!""))[^"\\]*)*(""")?'
     string = any("STRING", [sq3string, dq3string, sqstring, dqstring])
-    return kw + "|" + builtin + "|" + comment + "|" + string + "|" + any("SYNC", [r"\n"])
+    return kw + "|" + builtin + "|" + comment + "|" + string +\
+           "|" + any("SYNC", [r"\n"])
 
 prog = re.compile(make_pat(), re.S)
 idprog = re.compile(r"\s+(\w+)", re.S)
@@ -86,8 +84,8 @@
         self.notify_range(index1)
 
     after_id = None
-    allow_colorizing = 1
-    colorizing = 0
+    allow_colorizing = True
+    colorizing = False
 
     def notify_range(self, index1, index2=None):
         self.tag_add("TODO", index1, index2)
@@ -95,7 +93,7 @@
             if DEBUG: print "colorizing already scheduled"
             return
         if self.colorizing:
-            self.stop_colorizing = 1
+            self.stop_colorizing = True
             if DEBUG: print "stop colorizing"
         if self.allow_colorizing:
             if DEBUG: print "schedule colorizing"
@@ -109,8 +107,8 @@
             self.after_id = None
             if DEBUG: print "cancel scheduled recolorizer"
             self.after_cancel(after_id)
-        self.allow_colorizing = 0
-        self.stop_colorizing = 1
+        self.allow_colorizing = False
+        self.stop_colorizing = True
         if close_when_done:
             if not self.colorizing:
                 close_when_done.destroy()
@@ -125,12 +123,13 @@
             self.after_cancel(after_id)
         if self.allow_colorizing and self.colorizing:
             if DEBUG: print "stop colorizing"
-            self.stop_colorizing = 1
+            self.stop_colorizing = True
         self.allow_colorizing = not self.allow_colorizing
         if self.allow_colorizing and not self.colorizing:
             self.after_id = self.after(1, self.recolorize)
         if DEBUG:
-            print "auto colorizing turned", self.allow_colorizing and "on" or "off"
+            print "auto colorizing turned",\
+                  self.allow_colorizing and "on" or "off"
         return "break"
 
     def recolorize(self):
@@ -145,15 +144,15 @@
             if DEBUG: print "already colorizing"
             return
         try:
-            self.stop_colorizing = 0
-            self.colorizing = 1
+            self.stop_colorizing = False
+            self.colorizing = True
             if DEBUG: print "colorizing..."
             t0 = time.clock()
             self.recolorize_main()
             t1 = time.clock()
             if DEBUG: print "%.3f seconds" % (t1-t0)
         finally:
-            self.colorizing = 0
+            self.colorizing = False
         if self.allow_colorizing and self.tag_nextrange("TODO", "1.0"):
             if DEBUG: print "reschedule colorizing"
             self.after_id = self.after(1, self.recolorize)
@@ -164,7 +163,7 @@
 
     def recolorize_main(self):
         next = "1.0"
-        while 1:
+        while True:
             item = self.tag_nextrange("TODO", next)
             if not item:
                 break
@@ -179,7 +178,7 @@
             chars = ""
             next = head
             lines_to_get = 1
-            ok = 0
+            ok = False
             while not ok:
                 mark = next
                 next = self.index(mark + "+%d lines linestart" %
@@ -211,7 +210,7 @@
                             elif value == "import":
                                 # color all the "as" words on same line;
                                 # cheap approximation to the truth
-                                while 1:
+                                while True:
                                     m1 = self.asprog.match(chars, b)
                                     if not m1:
                                         break
@@ -224,7 +223,7 @@
                     head = next
                     chars = ""
                 else:
-                    ok = 0
+                    ok = False
                 if not ok:
                     # We're in an inconsistent state, and the call to
                     # update may tell us to stop.  It may also change
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 2ee1243..717eabc 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -3,7 +3,12 @@
 
 *Release date: XX-XXX-2004*
 
+- If the normal background is changed via Configure/Highlighting, it will update 
+  immediately, thanks to the previously mentioned patch.
+
 - Add a highlight theme for builtin keywords.  Python Patch 805830 Nigel Rowe
+  This also fixed IDLEfork bug [ 693418 ] Normal text background color not refreshed
+  and Python bug [897872 ] Unknown color name on HP-UX
 
 - rpc.py:SocketIO - Large modules were generating large pickles when downloaded
   to the execution server.  The return of the OK response from the subprocess