diff options
| author | Juri Linkov | 2025-04-22 19:48:30 +0300 |
|---|---|---|
| committer | Juri Linkov | 2025-04-22 19:48:30 +0300 |
| commit | 426c98bd96f6ab79f6f72f89cfde9759560ad64b (patch) | |
| tree | 3d0192b8a9f8eab66bbfa6246e709c20e2edc07b | |
| parent | 8fb45fcaedbe1b89bab54406c8739404d0ad35bc (diff) | |
| download | emacs-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.el | 34 |
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 | ||