(defun mhtml-ts-mode--colorize-css-value (node override start end &rest _)
"Colorize CSS property value like `css--fontify-region'.
For NODE, OVERRIDE, START, and END, see `treesit-font-lock-rules'."
- (if (and mhtml-ts-mode-css-fontify-colors
- (string-equal "plain_value" (treesit-node-type node)))
- (let ((color (css--compute-color start (treesit-node-text node t))))
- (when color
- (with-silent-modifications
- (add-text-properties
- (treesit-node-start node) (treesit-node-end node)
- (list 'face (list :background color
- :foreground (readable-foreground-color
- color)
- :box '(:line-width -1)))))))
+ (let ((node-start (treesit-node-start node))
+ (node-end (treesit-node-end node)))
(treesit-fontify-with-override
- (treesit-node-start node) (treesit-node-end node)
+ node-start node-end
'font-lock-variable-name-face
- override start end)))
+ override start end)
+ ;; apply color if required
+ (when-let* ((ok (and mhtml-ts-mode-css-fontify-colors
+ (member (treesit-node-type node) '("plain_value" "color_value"))))
+ (color (css--compute-color start (treesit-node-text node t))))
+ (with-silent-modifications
+ (add-text-properties
+ node-start node-end
+ (list 'face (list :background color
+ :foreground (readable-foreground-color
+ color)
+ :box '(:line-width -1))))))))
;; Embedded languages should be indented according to the language
;; that embeds them.
:language 'css
:override t
:feature 'variable
- '((plain_value) @font-lock-variable-name-face
- (plain_value) @mhtml-ts-mode--colorize-css-value))
+ '((plain_value) @mhtml-ts-mode--colorize-css-value
+ (color_value) @mhtml-ts-mode--colorize-css-value))
css--treesit-settings))
"Settings for `treesit-font-lock-settings'.")
`((css ((parent-is "stylesheet")
mhtml-ts-mode--js-css-tag-bol
mhtml-ts-mode--js-css-indent-offset)))
- css--treesit-indent-rules 'prepend)
- :replace))
- "Settings for `treesit-simple-indent-rules'.")
+ css--treesit-indent-rules
+ :prepend))))
(defvar mhtml-ts-mode--treesit-aggregated-simple-imenu-settings
`((html ,@html-ts-mode--treesit-simple-imenu-settings)