]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/treesit-x.el: Use 'treesit-ensure-installed'.
authorJuri Linkov <juri@linkov.net>
Tue, 22 Apr 2025 16:48:30 +0000 (19:48 +0300)
committerEshel Yaron <me@eshelyaron.com>
Tue, 22 Apr 2025 17:58:26 +0000 (19:58 +0200)
(define-treesit-generic-mode): Append new item
to 'treesit-language-source-alist' instead of prepending.
(treesit-generic-mode-setup): Remove 'source' arg.
Use 'treesit-ensure-installed'.
(liquid-generic-ts-mode): Use 'treesit-ensure-installed'.
(alpinejs-generic-ts-setup): Run setup hook.
(treesit-generic-mode-font-lock-map): Add more mappings.

(cherry picked from commit 426c98bd96f6ab79f6f72f89cfde9759560ad64b)

lisp/treesit-x.el

index 5989bb898503ec085e92d3c6cd878ed1961100cc..662c5c7ff3b2a68eff971bc952f9767b45f9ad1b 100644 (file)
@@ -116,7 +116,7 @@ of `define-treesit-generic-mode'.
 
     `(progn
        ;; Add lang and source to source-alist.
-       (add-to-list 'treesit-language-source-alist (cons ,lang ,source))
+       (add-to-list 'treesit-language-source-alist (cons ,lang ,source) t)
 
        ;; Add it to auto-mode-alist
        (dolist (re ,auto-mode)
@@ -128,21 +128,14 @@ of `define-treesit-generic-mode'.
          ,(or docstring
               (concat (or name pretty-name) " mode.\n"
                       "This a tree-sitter mode defined with `define-treesit-generic-mode'."))
-         (treesit-generic-mode-setup ,lang ,source)
+         (treesit-generic-mode-setup ,lang)
          ,@body
          (treesit-major-mode-setup)))))
 
 ;;;###autoload
-(defun treesit-generic-mode-setup (lang source)
+(defun treesit-generic-mode-setup (lang)
   "Go into the treesit generic mode MODE."
-  (unless (treesit-ready-p lang t)
-    (when (y-or-n-p (format "Install grammar for %s?" lang))
-      (apply
-       #'treesit--install-language-grammar-1
-       (locate-user-emacs-file "tree-sitter")
-       lang source)))
-
-  (when (treesit-ready-p lang)
+  (when (treesit-ensure-installed lang)
     (setq treesit-primary-parser (treesit-parser-create lang))
 
     (when-let* ((query (treesit-generic-mode-font-lock-query lang)))
@@ -164,17 +157,26 @@ of `define-treesit-generic-mode'.
     ("@boolean"               . "@font-lock-constant-face")
     ("@comment"               . "@font-lock-comment-face")
     ("@constant"              . "@font-lock-constant-face")
+    ("@delimiter"             . "@font-lock-delimiter-face")
     ("@error"                 . "@font-lock-warning-face")
     ("@escape"                . "@font-lock-escape-face")
+    ("@function"              . "@font-lock-function-name-face")
+    ("@function.call"         . "@font-lock-function-call-face")
     ("@keyword"               . "@font-lock-keyword-face")
+    ("@keyword.operator"      . "@font-lock-operator-face")
+    ("@number"                . "@font-lock-number-face")
     ("@operator"              . "@font-lock-operator-face")
-    ("@property"              . "@font-lock-property-use-face")
+    ("@property"              . "@font-lock-property-name-face")
     ("@punctuation.bracket"   . "@font-lock-bracket-face")
     ("@punctuation.delimiter" . "@font-lock-delimiter-face")
     ("@punctuation.special"   . "@font-lock-misc-punctuation-face")
+    ("@string"                . "@font-lock-string-face")
     ("@string.regexp"         . "@font-lock-regexp-face")
     ("@string.special"        . "@font-lock-string-face")
-    ("@string"                . "@font-lock-string-face")
+    ("@tag.delimiter"         . "@font-lock-delimiter-face")
+    ("@text.reference"        . "@font-lock-doc-face")
+    ("@type"                  . "@font-lock-type-face")
+    ("@variable"              . "@font-lock-variable-name-face")
     ("@variable.builtin"      . "@font-lock-builtin-face")
     ("@variable.parameter"    . "@font-lock-variable-name-face")
     )
@@ -241,7 +243,7 @@ of `define-treesit-generic-mode'.
                                                "for_loop_statement")
                                        eos)))))
 
-  (when (treesit-ready-p 'yaml t)
+  (when (treesit-ensure-installed 'yaml)
     (defvar yaml-ts-mode--font-lock-settings)
     (require 'yaml-ts-mode)
     (setq-local treesit-range-settings
@@ -310,7 +312,9 @@ Intended to be used in combination with such major modes as
                           (:match ,alpinejs-generic-ts-attr-regexp @_name)
                           (quoted_attribute_value "\"" @font-lock-string-face))))))
 
-  (treesit-major-mode-setup))
+  (treesit-major-mode-setup)
+
+  (run-mode-hooks 'alpinejs-generic-ts-setup-hook))
 
 (provide 'treesit-x)