From: kobarity Date: Wed, 11 Dec 2024 14:21:04 +0000 (+0900) Subject: Fix font-lock of Python f-strings X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3de275c49361ce757de4e4b1635fb5fab9268512;p=emacs.git Fix font-lock of Python f-strings * lisp/progmodes/python.el (python--font-lock-f-strings): Bind 'parse-sexp-ignore-comments' to nil so that we can look for closing braces even if a hash is used in the format specifier. * test/lisp/progmodes/python-tests.el (python-font-lock-f-string-1): New test. (Bug#74738) (cherry picked from commit 71cd290c20dbbd8b14f09818b3c1b58623aea350) --- diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 95bd1e49cd0..477200b5720 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -617,7 +617,9 @@ the {...} holes that appear within f-strings." (forward-char 1) ;Just skip over {{ (let ((beg (match-beginning 0)) (end (condition-case nil - (progn (up-list 1) (min send (point))) + (let ((parse-sexp-ignore-comments)) + (up-list 1) + (min send (point))) (scan-error send)))) (goto-char end) (put-text-property beg end 'face nil)))) diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el index 197f639823f..ae37bcfffce 100644 --- a/test/lisp/progmodes/python-tests.el +++ b/test/lisp/progmodes/python-tests.el @@ -676,6 +676,14 @@ y = \"confused\"" (17 . font-lock-operator-face) (18) (19 . font-lock-string-face)))) +(ert-deftest python-font-lock-f-string-1 () + "Test for bug#74738." + (python-tests-assert-faces + "print(f\"{value:#x} is a value\")" + '((1 . font-lock-builtin-face) (6) + (8 . font-lock-string-face) (9) + (19 . font-lock-string-face) (31)))) + ;;; Indentation