mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-11 00:30:17 -08:00
Fix recently introduced Python font lock breakage of chained assignments
* lisp/progmodes/python.el (python-font-lock-assignment-matcher): Fix fontification of chained assignments (bug#54992).
This commit is contained in:
parent
22ae842b34
commit
a8acb9516e
2 changed files with 13 additions and 3 deletions
|
|
@ -606,12 +606,15 @@ builtins.")
|
||||||
Search for next occurrence if REGEXP matched within a `paren'
|
Search for next occurrence if REGEXP matched within a `paren'
|
||||||
context (to avoid, e.g., default values for arguments or passing
|
context (to avoid, e.g., default values for arguments or passing
|
||||||
arguments by name being treated as assignments) or is followed by
|
arguments by name being treated as assignments) or is followed by
|
||||||
an '=' sign (to avoid '==' being treated as an assignment."
|
an '=' sign (to avoid '==' being treated as an assignment. Set
|
||||||
|
point to the position one character before the end of the
|
||||||
|
occurrence found so that subsequent searches can detect the '='
|
||||||
|
sign in chained assignment."
|
||||||
(lambda (limit)
|
(lambda (limit)
|
||||||
(cl-loop while (re-search-forward regexp limit t)
|
(cl-loop while (re-search-forward regexp limit t)
|
||||||
unless (or (python-syntax-context 'paren)
|
unless (or (python-syntax-context 'paren)
|
||||||
(equal (char-after) ?=))
|
(equal (char-after) ?=))
|
||||||
return t)))
|
return (progn (backward-char) t))))
|
||||||
|
|
||||||
(defvar python-font-lock-keywords-maximum-decoration
|
(defvar python-font-lock-keywords-maximum-decoration
|
||||||
`((python--font-lock-f-strings)
|
`((python--font-lock-f-strings)
|
||||||
|
|
@ -706,7 +709,7 @@ an '=' sign (to avoid '==' being treated as an assignment."
|
||||||
;; [a] = 5
|
;; [a] = 5
|
||||||
;; [*a] = 5, 6
|
;; [*a] = 5, 6
|
||||||
(,(python-font-lock-assignment-matcher
|
(,(python-font-lock-assignment-matcher
|
||||||
(python-rx (or line-start ?\;) (* space)
|
(python-rx (or line-start ?\; ?=) (* space)
|
||||||
(or "[" "(") (* space)
|
(or "[" "(") (* space)
|
||||||
grouped-assignment-target (* space)
|
grouped-assignment-target (* space)
|
||||||
(or ")" "]") (* space)
|
(or ")" "]") (* space)
|
||||||
|
|
|
||||||
|
|
@ -342,6 +342,13 @@ aliqua."
|
||||||
(16 . font-lock-variable-name-face) (17))))
|
(16 . font-lock-variable-name-face) (17))))
|
||||||
|
|
||||||
(ert-deftest python-font-lock-assignment-statement-17 ()
|
(ert-deftest python-font-lock-assignment-statement-17 ()
|
||||||
|
(python-tests-assert-faces
|
||||||
|
"(a) = (b) = 1"
|
||||||
|
`((1)
|
||||||
|
(2 . font-lock-variable-name-face) (3)
|
||||||
|
(8 . font-lock-variable-name-face) (9))))
|
||||||
|
|
||||||
|
(ert-deftest python-font-lock-assignment-statement-18 ()
|
||||||
(python-tests-assert-faces
|
(python-tests-assert-faces
|
||||||
"CustomInt = int
|
"CustomInt = int
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue