Don't font-lock invalid invalid class/function names

* lisp/progmodes/python.el (python-font-lock-keywords-level-1):
Don't font-lock invalid invalid class/function names (bug#55573).
This commit is contained in:
kobarity 2022-05-22 18:53:00 +02:00 committed by Lars Ingebrigtsen
parent 91bc24c467
commit 45694a2594
2 changed files with 14 additions and 2 deletions

View file

@ -540,9 +540,9 @@ the {...} holes that appear within f-strings."
(setq ppss (syntax-ppss))))))
(defvar python-font-lock-keywords-level-1
`((,(rx symbol-start "def" (1+ space) (group (1+ (or word ?_))))
`((,(python-rx symbol-start "def" (1+ space) (group symbol-name))
(1 font-lock-function-name-face))
(,(rx symbol-start "class" (1+ space) (group (1+ (or word ?_))))
(,(python-rx symbol-start "class" (1+ space) (group symbol-name))
(1 font-lock-type-face)))
"Font lock keywords to use in `python-mode' for level 1 decoration.

View file

@ -214,6 +214,18 @@ aliqua."
(should (string= (buffer-string) "\"\""))
(should (null (nth 3 (syntax-ppss))))))
(ert-deftest python-font-lock-keywords-level-1-1 ()
(python-tests-assert-faces
"def func():"
'((1 . font-lock-keyword-face) (4)
(5 . font-lock-function-name-face) (9))))
(ert-deftest python-font-lock-keywords-level-1-2 ()
"Invalid function name should not be font-locked."
(python-tests-assert-faces
"def 1func():"
'((1 . font-lock-keyword-face) (4))))
(ert-deftest python-font-lock-assignment-statement-1 ()
(python-tests-assert-faces
"a, b, c = 1, 2, 3"