From 87126826ecd58856bae390bd1dfa4058a7b22e57 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Tue, 22 Apr 2025 19:48:30 +0300 Subject: [PATCH] * lisp/treesit-x.el: Use 'treesit-ensure-installed'. (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 | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/lisp/treesit-x.el b/lisp/treesit-x.el index 5989bb89850..662c5c7ff3b 100644 --- a/lisp/treesit-x.el +++ b/lisp/treesit-x.el @@ -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) -- 2.39.5