diff options
author | Barry Warsaw <barry@python.org> | 1997-11-06 14:35:15 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 1997-11-06 14:35:15 (GMT) |
commit | b8f11669225ed5d01bf6a0acbf968487cb9501c5 (patch) | |
tree | 1393ff489d91d5ada70010f6191c4fc93f303dec /Misc | |
parent | ef3c891773c129273fa9f39d96993d37c8b56c86 (diff) | |
download | cpython-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')
-rw-r--r-- | Misc/python-mode.el | 29 |
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) |