[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-29 800e15e3be 09/10: Fix string-interpolation feature of python-ts
From: |
Yuan Fu |
Subject: |
emacs-29 800e15e3be 09/10: Fix string-interpolation feature of python-ts-mode (bug#60599) |
Date: |
Sat, 7 Jan 2023 21:44:44 -0500 (EST) |
branch: emacs-29
commit 800e15e3be0569efdaa5e42c82937b1c87b7ec58
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>
Fix string-interpolation feature of python-ts-mode (bug#60599)
* lisp/progmodes/python.el:
(python--treesit-fontify-string-interpolation): New function.
(python--treesit-settings): Use the new function for
string-interpolation.
---
lisp/progmodes/python.el | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index c399bbc64f..e6ded7a064 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1072,6 +1072,20 @@ fontified."
(treesit-fontify-with-override
string-beg string-end face override start end)))
+(defun python--treesit-fontify-string-interpolation
+ (node _ start end &rest _)
+ "Fontify string interpolation.
+NODE is the string node. Do not fontify the initial f for
+f-strings. START and END mark the region to be
+fontified."
+ ;; This is kind of a hack, it basically removes the face applied by
+ ;; the string feature, so that following features can apply their
+ ;; face.
+ (let ((n-start (treesit-node-start node))
+ (n-end (treesit-node-end node)))
+ (remove-text-properties
+ (max start n-start) (min end n-end) '(face))))
+
(defvar python--treesit-settings
(treesit-font-lock-rules
:feature 'comment
@@ -1082,10 +1096,12 @@ fontified."
:language 'python
'((string) @python--treesit-fontify-string)
+ ;; HACK: This feature must come after the string feature and before
+ ;; other features. Maybe we should make string-interpolation an
+ ;; option rather than a feature.
:feature 'string-interpolation
:language 'python
- :override t
- '((interpolation (identifier) @font-lock-variable-name-face))
+ '((interpolation) @python--treesit-fontify-string-interpolation)
:feature 'definition
:language 'python
- emacs-29 updated (ee3e8d3f92 -> e3d806b417), Yuan Fu, 2023/01/07
- emacs-29 16f1e47ca8 02/10: ; * lisp/align.el (align-c++-modes): Add c/c++-ts-mode., Yuan Fu, 2023/01/07
- emacs-29 8575043f56 05/10: Remove duplicate entries in c-ts-mode's Imenu, Yuan Fu, 2023/01/07
- emacs-29 73168793c0 06/10: Fix label indentation for Linux style in c-ts-mode (bug#60543), Yuan Fu, 2023/01/07
- emacs-29 800e15e3be 09/10: Fix string-interpolation feature of python-ts-mode (bug#60599),
Yuan Fu <=
- emacs-29 508389ad2b 01/10: Add documentation for c/c++-ts-mode (bug#60443), Yuan Fu, 2023/01/07
- emacs-29 cc1de953d4 03/10: ; * lisp/progmodes/gud.el (gud-tooltip-modes): Add ts- modes., Yuan Fu, 2023/01/07
- emacs-29 38b63f4c3c 08/10: Add indentation rule for concatenated_string (bug#60572), Yuan Fu, 2023/01/07
- emacs-29 ef7f3c6388 04/10: Fix use of treesit-ready-p in c/c++-ts-mode, Yuan Fu, 2023/01/07
- emacs-29 2cdd75a18f 07/10: Fix highlighting of variable-declarations in typescript-ts-mode, Yuan Fu, 2023/01/07
- emacs-29 e3d806b417 10/10: Fix string fontification on python-ts-mode (bug#60599), Yuan Fu, 2023/01/07