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.
This commit is contained in:
parent
38b63f4c3c
commit
800e15e3be
1 changed files with 18 additions and 2 deletions
|
@ -1072,6 +1072,20 @@ fontified."
|
||||||
(treesit-fontify-with-override
|
(treesit-fontify-with-override
|
||||||
string-beg string-end face override start end)))
|
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
|
(defvar python--treesit-settings
|
||||||
(treesit-font-lock-rules
|
(treesit-font-lock-rules
|
||||||
:feature 'comment
|
:feature 'comment
|
||||||
|
@ -1082,10 +1096,12 @@ fontified."
|
||||||
:language 'python
|
:language 'python
|
||||||
'((string) @python--treesit-fontify-string)
|
'((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
|
:feature 'string-interpolation
|
||||||
:language 'python
|
:language 'python
|
||||||
:override t
|
'((interpolation) @python--treesit-fontify-string-interpolation)
|
||||||
'((interpolation (identifier) @font-lock-variable-name-face))
|
|
||||||
|
|
||||||
:feature 'definition
|
:feature 'definition
|
||||||
:language 'python
|
:language 'python
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue