aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuri Linkov2025-04-22 19:48:30 +0300
committerJuri Linkov2025-04-22 19:48:30 +0300
commit426c98bd96f6ab79f6f72f89cfde9759560ad64b (patch)
tree3d0192b8a9f8eab66bbfa6246e709c20e2edc07b
parent8fb45fcaedbe1b89bab54406c8739404d0ad35bc (diff)
downloademacs-426c98bd96f6ab79f6f72f89cfde9759560ad64b.tar.gz
emacs-426c98bd96f6ab79f6f72f89cfde9759560ad64b.zip
* 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.
-rw-r--r--lisp/treesit-x.el34
1 files 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'.
116 116
117 `(progn 117 `(progn
118 ;; Add lang and source to source-alist. 118 ;; Add lang and source to source-alist.
119 (add-to-list 'treesit-language-source-alist (cons ,lang ,source)) 119 (add-to-list 'treesit-language-source-alist (cons ,lang ,source) t)
120 120
121 ;; Add it to auto-mode-alist 121 ;; Add it to auto-mode-alist
122 (dolist (re ,auto-mode) 122 (dolist (re ,auto-mode)
@@ -128,21 +128,14 @@ of `define-treesit-generic-mode'.
128 ,(or docstring 128 ,(or docstring
129 (concat (or name pretty-name) " mode.\n" 129 (concat (or name pretty-name) " mode.\n"
130 "This a tree-sitter mode defined with `define-treesit-generic-mode'.")) 130 "This a tree-sitter mode defined with `define-treesit-generic-mode'."))
131 (treesit-generic-mode-setup ,lang ,source) 131 (treesit-generic-mode-setup ,lang)
132 ,@body 132 ,@body
133 (treesit-major-mode-setup))))) 133 (treesit-major-mode-setup)))))
134 134
135;;;###autoload 135;;;###autoload
136(defun treesit-generic-mode-setup (lang source) 136(defun treesit-generic-mode-setup (lang)
137 "Go into the treesit generic mode MODE." 137 "Go into the treesit generic mode MODE."
138 (unless (treesit-ready-p lang t) 138 (when (treesit-ensure-installed lang)
139 (when (y-or-n-p (format "Install grammar for %s?" lang))
140 (apply
141 #'treesit--install-language-grammar-1
142 (locate-user-emacs-file "tree-sitter")
143 lang source)))
144
145 (when (treesit-ready-p lang)
146 (setq treesit-primary-parser (treesit-parser-create lang)) 139 (setq treesit-primary-parser (treesit-parser-create lang))
147 140
148 (when-let* ((query (treesit-generic-mode-font-lock-query lang))) 141 (when-let* ((query (treesit-generic-mode-font-lock-query lang)))
@@ -164,17 +157,26 @@ of `define-treesit-generic-mode'.
164 ("@boolean" . "@font-lock-constant-face") 157 ("@boolean" . "@font-lock-constant-face")
165 ("@comment" . "@font-lock-comment-face") 158 ("@comment" . "@font-lock-comment-face")
166 ("@constant" . "@font-lock-constant-face") 159 ("@constant" . "@font-lock-constant-face")
160 ("@delimiter" . "@font-lock-delimiter-face")
167 ("@error" . "@font-lock-warning-face") 161 ("@error" . "@font-lock-warning-face")
168 ("@escape" . "@font-lock-escape-face") 162 ("@escape" . "@font-lock-escape-face")
163 ("@function" . "@font-lock-function-name-face")
164 ("@function.call" . "@font-lock-function-call-face")
169 ("@keyword" . "@font-lock-keyword-face") 165 ("@keyword" . "@font-lock-keyword-face")
166 ("@keyword.operator" . "@font-lock-operator-face")
167 ("@number" . "@font-lock-number-face")
170 ("@operator" . "@font-lock-operator-face") 168 ("@operator" . "@font-lock-operator-face")
171 ("@property" . "@font-lock-property-use-face") 169 ("@property" . "@font-lock-property-name-face")
172 ("@punctuation.bracket" . "@font-lock-bracket-face") 170 ("@punctuation.bracket" . "@font-lock-bracket-face")
173 ("@punctuation.delimiter" . "@font-lock-delimiter-face") 171 ("@punctuation.delimiter" . "@font-lock-delimiter-face")
174 ("@punctuation.special" . "@font-lock-misc-punctuation-face") 172 ("@punctuation.special" . "@font-lock-misc-punctuation-face")
173 ("@string" . "@font-lock-string-face")
175 ("@string.regexp" . "@font-lock-regexp-face") 174 ("@string.regexp" . "@font-lock-regexp-face")
176 ("@string.special" . "@font-lock-string-face") 175 ("@string.special" . "@font-lock-string-face")
177 ("@string" . "@font-lock-string-face") 176 ("@tag.delimiter" . "@font-lock-delimiter-face")
177 ("@text.reference" . "@font-lock-doc-face")
178 ("@type" . "@font-lock-type-face")
179 ("@variable" . "@font-lock-variable-name-face")
178 ("@variable.builtin" . "@font-lock-builtin-face") 180 ("@variable.builtin" . "@font-lock-builtin-face")
179 ("@variable.parameter" . "@font-lock-variable-name-face") 181 ("@variable.parameter" . "@font-lock-variable-name-face")
180 ) 182 )
@@ -241,7 +243,7 @@ of `define-treesit-generic-mode'.
241 "for_loop_statement") 243 "for_loop_statement")
242 eos))))) 244 eos)))))
243 245
244 (when (treesit-ready-p 'yaml t) 246 (when (treesit-ensure-installed 'yaml)
245 (defvar yaml-ts-mode--font-lock-settings) 247 (defvar yaml-ts-mode--font-lock-settings)
246 (require 'yaml-ts-mode) 248 (require 'yaml-ts-mode)
247 (setq-local treesit-range-settings 249 (setq-local treesit-range-settings
@@ -310,7 +312,9 @@ Intended to be used in combination with such major modes as
310 (:match ,alpinejs-generic-ts-attr-regexp @_name) 312 (:match ,alpinejs-generic-ts-attr-regexp @_name)
311 (quoted_attribute_value "\"" @font-lock-string-face)))))) 313 (quoted_attribute_value "\"" @font-lock-string-face))))))
312 314
313 (treesit-major-mode-setup)) 315 (treesit-major-mode-setup)
316
317 (run-mode-hooks 'alpinejs-generic-ts-setup-hook))
314 318
315(provide 'treesit-x) 319(provide 'treesit-x)
316 320