diff Misc/python-mode.el @ 3427:af5ff5231d4a legacy-trunk

(python-font-lock-keywords): Much improved descrimination between keywords and names with keywords in them.
author Barry Warsaw <barry@python.org>
date Tue, 05 Mar 1996 00:44:31 +0000
parents 6402be2689c5
children ba983140718a
line wrap: on
line diff
--- a/Misc/python-mode.el	Mon Mar 04 17:15:40 1996 +0000
+++ b/Misc/python-mode.el	Tue Mar 05 00:44:31 1996 +0000
@@ -204,29 +204,29 @@
 ;; well.
 ;; 
 (defvar python-font-lock-keywords
-   (list
-    (cons (concat
-	   "\\b\\("
-	   (mapconcat
-	    'identity
-	    '("access"     "and"      "break"    "continue"
-	      "del"        "elif"     "else:"    "except"
-	      "except:"    "exec"     "finally:" "for"
-	      "from"       "global"   "if"       "import"
-	      "in"         "is"       "lambda"   "not"
-	      "or"         "pass"     "print"    "raise"
-	      "return"     "try:"     "while"
-	      )
-	    "\\|")
-	   "\\)[ \n\t(]")
-          1)
-    ;; classes
-    '("\\bclass[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)"
-      1 font-lock-type-face)
-    ;; functions
-    '("\\bdef[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)"
-      1 font-lock-function-name-face)
-    )
+  (let* ((keywords '("access"     "and"      "break"    "continue"
+		     "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 "\\|")))
+    (list
+     ;; keywords not at beginning of line
+     (cons (concat "\\s-\\(" kwregex "\\)[ \n\t(]") 1)
+     ;; keywords at beginning of line.  i don't think regexps are
+     ;; powerful enough to handle these two cases in one regexp.
+     ;; prove me wrong!
+     (cons (concat "^\\(" kwregex "\\)[ \n\t(]") 1)
+     ;; classes
+     '("\\bclass[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)"
+       1 font-lock-type-face)
+     ;; functions
+     '("\\bdef[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)"
+       1 font-lock-function-name-face)
+     ))
   "*Additional expressions to highlight in Python mode.")
 
 ;; R Lindsay Todd <toddr@rpi.edu> suggests these changes to the