(python-font-lock-keywords): Pick up block introducing keywords with
immediately following colons.  Sjoerd noticed this one too.  Here's a
nonsense.py file that flexes all the font-lock keyword combinations.

class A:
    class B(A):
	pass
    def __init__(self):
	if i == 2 and j == 3 or k == 4:
	    import stuff
	    from otherstuff import cool
	    for i in range(cool.count):
		if i == j:
		    break
		elif j == 1:
		    continue
		print i
	    else:
		return not i
	elif q is not i:
	    return lambda x: x + 1
	else:
	    try:
		try:
		    raise stuff.error
		except stuff.error, v:
		    print v
		except:
		    global q
	    finally:
		while q > 0:
		    q = q - 1
		assert q == 0

def make():
    a = A()
    exec "nonsense"
    del a
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index ebcb139..d598bc6 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -246,19 +246,26 @@
 features supporting those needed by CC Mode.")
 
 (defvar python-font-lock-keywords
-  (let* ((keywords '("and"        "assert"     "break"      "class"
-		     "continue"   "def"        "del"        "elif"
-		     "else:"      "except"     "except:"    "exec"
-		     "finally:"   "for"        "from"       "global"
-		     "if"         "import"     "in"         "is"
-		     "lambda"     "not"        "or"         "pass"
-		     "print"      "raise"      "return"     "try:"
-		     "while"
-		     ))
-	 (kwregex (mapconcat 'identity keywords "\\|")))
+  (let ((kw1 (mapconcat 'identity
+			'("and"      "assert"   "break"   "class"
+			  "continue" "def"      "del"     "elif"
+			  "else"     "except"   "exec"    "for"
+			  "from"     "global"   "if"      "import"
+			  "in"       "is"       "lambda"  "not"
+			  "or"       "pass"     "print"   "raise"
+			  "return"   "while"
+			  )
+			"\\|"))
+	(kw2 (mapconcat 'identity
+			'("else:" "except:" "finally:" "try:")
+			"\\|"))
+	)
     (list
      ;; keywords
-     (cons (concat "\\b\\(" kwregex "\\)\\b[ \n\t(]") 1)
+     (cons (concat "\\b\\(" kw1 "\\)\\b[ \n\t(]") 1)
+     ;; block introducing keywords with immediately following colons.
+     ;; Yes "except" is in both lists.
+     (cons (concat "\\b\\(" kw2 "\\)[ \n\t(]") 1)
      ;; classes
      '("\\bclass[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)"
        1 font-lock-type-face)