summaryrefslogtreecommitdiffstats
path: root/Misc/python-mode.el
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>1997-11-06 14:35:15 (GMT)
committerBarry Warsaw <barry@python.org>1997-11-06 14:35:15 (GMT)
commitb8f11669225ed5d01bf6a0acbf968487cb9501c5 (patch)
tree1393ff489d91d5ada70010f6191c4fc93f303dec /Misc/python-mode.el
parentef3c891773c129273fa9f39d96993d37c8b56c86 (diff)
downloadcpython-b8f11669225ed5d01bf6a0acbf968487cb9501c5.zip
cpython-b8f11669225ed5d01bf6a0acbf968487cb9501c5.tar.gz
cpython-b8f11669225ed5d01bf6a0acbf968487cb9501c5.tar.bz2
(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
Diffstat (limited to 'Misc/python-mode.el')
-rw-r--r--Misc/python-mode.el29
1 files changed, 18 insertions, 11 deletions
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 @@ There are many flavors of Emacs out there, each with different
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)