1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 06:20:55 -08:00

Lock tree-sitter language grammars to verified versions.

* admin/notes/tree-sitter/build-module/build.sh:
Update org for toml/yaml.

* admin/tree-sitter/treesit-admin.el
(treesit-admin--builtin-language-sources):
Add verified versions.

* lisp/progmodes/c-ts-mode.el:
Append language source to treesit-language-source-alist.
(c-ts-mode, c++-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/cmake-ts-mode.el:
Append language source to treesit-language-source-alist.
(cmake-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/csharp-mode.el:
Append language source to treesit-language-source-alist.
(csharp-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/dockerfile-ts-mode.el:
Append language source to treesit-language-source-alist.
(dockerfile-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/elixir-ts-mode.el:
Append language source to treesit-language-source-alist.
(elixir-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/go-ts-mode.el:
Append language source to treesit-language-source-alist.
(go-ts-mode, go-mod-ts-mode, go-work-ts-mode):
Use treesit-ensure-installed.

* lisp/progmodes/heex-ts-mode.el:
Append language source to treesit-language-source-alist.
(heex-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/java-ts-mode.el:
Append language source to treesit-language-source-alist.
(java-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/js.el:
Append language source to treesit-language-source-alist.
(js-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/json-ts-mode.el:
Append language source to treesit-language-source-alist.
(json-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/lua-ts-mode.el:
Append language source to treesit-language-source-alist.
(lua-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/php-ts-mode.el
(php-ts-mode--language-source-alist):
Update versions from comments in ts-modes.
Append to treesit-language-source-alist.
(php-ts-mode-install-parsers):
Use treesit-language-source-alist directly.
(php-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/ruby-ts-mode.el:
Append language source to treesit-language-source-alist.
(ruby-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/rust-ts-mode.el:
Append language source to treesit-language-source-alist.
(rust-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/sh-script.el:
Append language source to treesit-language-source-alist.
(bash-ts-mode): Use treesit-ensure-installed.

* lisp/progmodes/typescript-ts-mode.el:
Append language source to treesit-language-source-alist.
(typescript-ts-mode, tsx-ts-mode): Use treesit-ensure-installed.

* lisp/textmodes/css-mode.el:
Append language source to treesit-language-source-alist.
(css-ts-mode): Use treesit-ensure-installed.

* lisp/textmodes/html-ts-mode.el:
Append language source to treesit-language-source-alist.
(html-ts-mode): Use treesit-ensure-installed.

* lisp/textmodes/markdown-ts-mode.el:
Append language source to treesit-language-source-alist.
(markdown-ts-mode): Use treesit-ensure-installed.

* lisp/textmodes/mhtml-ts-mode.el
(mhtml-ts-mode--language-source-alist):
Append to treesit-language-source-alist.
(mhtml-ts-mode-install-parsers):
Use treesit-language-source-alist directly.
(mhtml-ts-mode): Use treesit-ensure-installed.

* lisp/textmodes/toml-ts-mode.el:
Append language source to treesit-language-source-alist.
(toml-ts-mode): Use treesit-ensure-installed.

* lisp/textmodes/yaml-ts-mode.el:
Append language source to treesit-language-source-alist.
(yaml-ts-mode): Use treesit-ensure-installed.

* test/infra/Dockerfile.emba: Add verified versions
to treesit-language-source-alist.
This commit is contained in:
Juri Linkov 2025-04-18 19:22:50 +03:00
parent c9b6be7d27
commit 3d3be6dd0e
25 changed files with 267 additions and 108 deletions

View file

@ -59,8 +59,11 @@ case "${lang}" in
sourcedir="tree-sitter-typescript/tsx/src" sourcedir="tree-sitter-typescript/tsx/src"
grammardir="tree-sitter-typescript/tsx" grammardir="tree-sitter-typescript/tsx"
;; ;;
"toml")
org="tree-sitter-grammars"
;;
"yaml") "yaml")
org="ikatyang" org="tree-sitter-grammars"
;; ;;
esac esac

View file

@ -72,31 +72,33 @@
;;; Query validation ;;; Query validation
(defvar treesit-admin--builtin-language-sources (defvar treesit-admin--builtin-language-sources
'((c "https://github.com/tree-sitter/tree-sitter-c") '((c "https://github.com/tree-sitter/tree-sitter-c" "v0.23.4")
(cpp "https://github.com/tree-sitter/tree-sitter-cpp") (cpp "https://github.com/tree-sitter/tree-sitter-cpp" "v0.23.4")
(cmake "https://github.com/uyha/tree-sitter-cmake") (cmake "https://github.com/uyha/tree-sitter-cmake" "v0.5.0")
(dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile") (dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile" "v0.2.0")
(go "https://github.com/tree-sitter/tree-sitter-go") (go "https://github.com/tree-sitter/tree-sitter-go" "v0.23.4")
(ruby "https://github.com/tree-sitter/tree-sitter-ruby") (ruby "https://github.com/tree-sitter/tree-sitter-ruby" "v0.23.1")
(javascript "https://github.com/tree-sitter/tree-sitter-javascript") (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "v0.23.1")
(typescript "https://github.com/tree-sitter/tree-sitter-typescript" (typescript "https://github.com/tree-sitter/tree-sitter-typescript"
nil "typescript/src") "v0.23.2" "typescript/src")
(tsx "https://github.com/tree-sitter/tree-sitter-typescript" (tsx "https://github.com/tree-sitter/tree-sitter-typescript"
nil "tsx/src") "v0.23.2" "tsx/src")
(json "https://github.com/tree-sitter/tree-sitter-json") (json "https://github.com/tree-sitter/tree-sitter-json" "v0.24.8")
(rust "https://github.com/tree-sitter/tree-sitter-rust") (rust "https://github.com/tree-sitter/tree-sitter-rust" "v0.23.2")
(php "https://github.com/tree-sitter/tree-sitter-php" (php "https://github.com/tree-sitter/tree-sitter-php"
nil "php/src") "v0.23.11" "php/src")
(css "https://github.com/tree-sitter/tree-sitter-css") (css "https://github.com/tree-sitter/tree-sitter-css" "v0.23.1")
(phpdoc "https://github.com/claytonrcarter/tree-sitter-phpdoc") (phpdoc "https://github.com/claytonrcarter/tree-sitter-phpdoc")
(doxygen "https://github.com/tree-sitter-grammars/tree-sitter-doxygen") (doxygen "https://github.com/tree-sitter-grammars/tree-sitter-doxygen" "v1.1.0")
(lua "https://github.com/tree-sitter-grammars/tree-sitter-lua") (lua "https://github.com/tree-sitter-grammars/tree-sitter-lua" "v0.3.0")
(python "https://github.com/tree-sitter/tree-sitter-python") (python "https://github.com/tree-sitter/tree-sitter-python" "v0.23.6")
(html "https://github.com/tree-sitter/tree-sitter-html") (html "https://github.com/tree-sitter/tree-sitter-html" "v0.23.2")
(elixir "https://github.com/elixir-lang/tree-sitter-elixir") (elixir "https://github.com/elixir-lang/tree-sitter-elixir" "v0.3.3")
(heex "https://github.com/phoenixframework/tree-sitter-heex") (heex "https://github.com/phoenixframework/tree-sitter-heex" "v0.7.0")
(java "https://github.com/tree-sitter/tree-sitter-java") (java "https://github.com/tree-sitter/tree-sitter-java" "v0.23.5")
(jsdoc "https://github.com/tree-sitter/tree-sitter-jsdoc")) (jsdoc "https://github.com/tree-sitter/tree-sitter-jsdoc" "v0.23.2")
(toml "https://github.com/tree-sitter-grammars/tree-sitter-toml" "v0.7.0")
(yaml "https://github.com/tree-sitter-grammars/tree-sitter-yaml" "v0.7.0"))
"A list of sources for the builtin modes. "A list of sources for the builtin modes.
The source information are in the format of The source information are in the format of
`treesit-language-source-alist'. This is for development only.") `treesit-language-source-alist'. This is for development only.")

View file

@ -86,6 +86,19 @@
(eval-when-compile (require 'rx)) (eval-when-compile (require 'rx))
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(c "https://github.com/tree-sitter/tree-sitter-c" "v0.23.4")
t)
(add-to-list
'treesit-language-source-alist
'(cpp "https://github.com/tree-sitter/tree-sitter-cpp" "v0.23.4")
t)
(add-to-list
'treesit-language-source-alist
'(doxygen "https://github.com/tree-sitter-grammars/tree-sitter-doxygen" "v1.1.0")
t)
;;; Custom variables ;;; Custom variables
(defcustom c-ts-mode-indent-offset 2 (defcustom c-ts-mode-indent-offset 2
@ -1460,7 +1473,7 @@ in your init files."
:group 'c :group 'c
:after-hook (c-ts-mode-set-modeline) :after-hook (c-ts-mode-set-modeline)
(when (treesit-ready-p 'c) (when (treesit-ensure-installed 'c)
;; Create an "for-each" parser, see `c-ts-mode--emacs-set-ranges' ;; Create an "for-each" parser, see `c-ts-mode--emacs-set-ranges'
;; for more. ;; for more.
(when c-ts-mode-emacs-sources-support (when c-ts-mode-emacs-sources-support
@ -1495,7 +1508,8 @@ in your init files."
(treesit-font-lock-recompute-features '(emacs-devel))) (treesit-font-lock-recompute-features '(emacs-devel)))
;; Inject doxygen parser for comment. ;; Inject doxygen parser for comment.
(when (and c-ts-mode-enable-doxygen (treesit-ready-p 'doxygen t)) (when (and c-ts-mode-enable-doxygen
(treesit-ensure-installed 'doxygen))
(setq-local treesit-primary-parser primary-parser) (setq-local treesit-primary-parser primary-parser)
(setq-local treesit-font-lock-settings (setq-local treesit-font-lock-settings
(append (append
@ -1535,7 +1549,7 @@ recommended to enable `electric-pair-mode' with this mode."
:group 'c++ :group 'c++
:after-hook (c-ts-mode-set-modeline) :after-hook (c-ts-mode-set-modeline)
(when (treesit-ready-p 'cpp) (when (treesit-ensure-installed 'cpp)
(let ((primary-parser (treesit-parser-create 'cpp))) (let ((primary-parser (treesit-parser-create 'cpp)))
;; Syntax. ;; Syntax.
@ -1557,7 +1571,8 @@ recommended to enable `electric-pair-mode' with this mode."
#'c-ts-mode--emacs-current-defun-name)) #'c-ts-mode--emacs-current-defun-name))
;; Inject doxygen parser for comment. ;; Inject doxygen parser for comment.
(when (and c-ts-mode-enable-doxygen (treesit-ready-p 'doxygen t)) (when (and c-ts-mode-enable-doxygen
(treesit-ensure-installed 'doxygen))
(setq-local treesit-primary-parser primary-parser) (setq-local treesit-primary-parser primary-parser)
(setq-local treesit-font-lock-settings (setq-local treesit-font-lock-settings
(append (append
@ -1670,9 +1685,6 @@ the code is C or C++, and based on that chooses whether to enable
(assq-delete-all 'c-or-c++-mode major-mode-remap-defaults)) (assq-delete-all 'c-or-c++-mode major-mode-remap-defaults))
(add-to-list 'major-mode-remap-defaults '(c-or-c++-mode . c-or-c++-ts-mode))) (add-to-list 'major-mode-remap-defaults '(c-or-c++-mode . c-or-c++-ts-mode)))
(when (and c-ts-mode-enable-doxygen (not (treesit-ready-p 'doxygen t)))
(message "Doxygen syntax highlighting can't be enabled, please install the language grammar."))
(provide 'c-ts-mode) (provide 'c-ts-mode)
(provide 'c++-ts-mode) (provide 'c++-ts-mode)

View file

@ -40,6 +40,11 @@
(eval-when-compile (require 'rx)) (eval-when-compile (require 'rx))
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(cmake "https://github.com/uyha/tree-sitter-cmake" "v0.5.0")
t)
(defcustom cmake-ts-mode-indent-offset 2 (defcustom cmake-ts-mode-indent-offset 2
"Number of spaces for each indentation step in `cmake-ts-mode'." "Number of spaces for each indentation step in `cmake-ts-mode'."
:version "29.1" :version "29.1"
@ -212,7 +217,7 @@ Return nil if there is no name or if NODE is not a defun node."
:group 'cmake :group 'cmake
:syntax-table cmake-ts-mode--syntax-table :syntax-table cmake-ts-mode--syntax-table
(when (treesit-ready-p 'cmake) (when (treesit-ensure-installed 'cmake)
(setq treesit-primary-parser (treesit-parser-create 'cmake)) (setq treesit-primary-parser (treesit-parser-create 'cmake))
;; Comments. ;; Comments.

View file

@ -649,6 +649,11 @@ compilation and evaluation time conflicts."
;;; Tree-sitter support ;;; Tree-sitter support
(add-to-list
'treesit-language-source-alist
'(c-sharp "https://github.com/tree-sitter/tree-sitter-c-sharp" "v0.23.1")
t)
(defcustom csharp-ts-mode-indent-offset 4 (defcustom csharp-ts-mode-indent-offset 4
"Number of spaces for each indentation step in `csharp-ts-mode'." "Number of spaces for each indentation step in `csharp-ts-mode'."
:type 'integer :type 'integer
@ -1056,7 +1061,7 @@ Key bindings:
"Major mode for editing C# code." "Major mode for editing C# code."
:syntax-table (csharp--make-mode-syntax-table) :syntax-table (csharp--make-mode-syntax-table)
(unless (treesit-ready-p 'c-sharp) (unless (treesit-ensure-installed 'c-sharp)
(error "Tree-sitter for C# isn't available")) (error "Tree-sitter for C# isn't available"))
;; Tree-sitter. ;; Tree-sitter.

View file

@ -40,6 +40,11 @@
(eval-when-compile (require 'rx)) (eval-when-compile (require 'rx))
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile" "v0.2.0")
t)
(defvar dockerfile-ts-mode--syntax-table (defvar dockerfile-ts-mode--syntax-table
(let ((table (make-syntax-table))) (let ((table (make-syntax-table)))
(modify-syntax-entry ?# "<" table) (modify-syntax-entry ?# "<" table)
@ -161,7 +166,7 @@ Return nil if there is no name or if NODE is not a stage node."
:group 'dockerfile :group 'dockerfile
:syntax-table dockerfile-ts-mode--syntax-table :syntax-table dockerfile-ts-mode--syntax-table
(when (treesit-ready-p 'dockerfile) (when (treesit-ensure-installed 'dockerfile)
(setq treesit-primary-parser (treesit-parser-create 'dockerfile)) (setq treesit-primary-parser (treesit-parser-create 'dockerfile))
;; Comments. ;; Comments.

View file

@ -57,6 +57,15 @@
(eval-when-compile (require 'rx)) (eval-when-compile (require 'rx))
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(elixir "https://github.com/elixir-lang/tree-sitter-elixir" "v0.3.3")
t)
(add-to-list
'treesit-language-source-alist
'(heex "https://github.com/phoenixframework/tree-sitter-heex" "v0.7.0")
t)
(defgroup elixir-ts nil (defgroup elixir-ts nil
"Major mode for editing Elixir code." "Major mode for editing Elixir code."
:prefix "elixir-ts-" :prefix "elixir-ts-"
@ -667,11 +676,11 @@ Return nil if NODE is not a defun node or doesn't have a name."
(add-hook 'post-self-insert-hook (add-hook 'post-self-insert-hook
#'elixir-ts--electric-pair-string-delimiter 'append t) #'elixir-ts--electric-pair-string-delimiter 'append t)
(when (treesit-ready-p 'elixir) (when (treesit-ensure-installed 'elixir)
;; The HEEx parser has to be created first for elixir to ensure elixir ;; The HEEx parser has to be created first for elixir to ensure elixir
;; is the first language when looking for treesit ranges. ;; is the first language when looking for treesit ranges.
;; (In Emacs 31 this requirement is removed.) ;; (In Emacs 31 this requirement is removed.)
(when (treesit-ready-p 'heex) (when (treesit-ensure-installed 'heex)
;; Require heex-ts-mode only when we load elixir-ts-mode ;; Require heex-ts-mode only when we load elixir-ts-mode
;; so that we don't get a tree-sitter compilation warning for ;; so that we don't get a tree-sitter compilation warning for
;; elixir-ts-mode. ;; elixir-ts-mode.
@ -737,7 +746,7 @@ Return nil if NODE is not a defun node or doesn't have a name."
(setq-local treesit-defun-name-function #'elixir-ts--defun-name) (setq-local treesit-defun-name-function #'elixir-ts--defun-name)
;; Embedded Heex. ;; Embedded Heex.
(when (treesit-ready-p 'heex) (when (treesit-ensure-installed 'heex)
(setq-local treesit-range-settings elixir-ts--treesit-range-rules) (setq-local treesit-range-settings elixir-ts--treesit-range-rules)
(setq-local treesit-font-lock-settings (setq-local treesit-font-lock-settings

View file

@ -46,6 +46,19 @@
(eval-when-compile (require 'rx)) (eval-when-compile (require 'rx))
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(go "https://github.com/tree-sitter/tree-sitter-go" "v0.23.4")
t)
(add-to-list
'treesit-language-source-alist
'(gomod "https://github.com/camdencheek/tree-sitter-go-mod" "v1.1.0")
t)
(add-to-list
'treesit-language-source-alist
'(gowork "https://github.com/omertuc/tree-sitter-go-work")
t)
(defcustom go-ts-mode-indent-offset 8 (defcustom go-ts-mode-indent-offset 8
"Number of spaces for each indentation step in `go-ts-mode'." "Number of spaces for each indentation step in `go-ts-mode'."
:version "29.1" :version "29.1"
@ -277,7 +290,7 @@
:group 'go :group 'go
:syntax-table go-ts-mode--syntax-table :syntax-table go-ts-mode--syntax-table
(when (treesit-ready-p 'go) (when (treesit-ensure-installed 'go)
(setq treesit-primary-parser (treesit-parser-create 'go)) (setq treesit-primary-parser (treesit-parser-create 'go))
;; Comments. ;; Comments.
@ -584,7 +597,7 @@ what the parent of the node would be if it were a node."
:group 'go :group 'go
:syntax-table go-mod-ts-mode--syntax-table :syntax-table go-mod-ts-mode--syntax-table
(when (treesit-ready-p 'gomod) (when (treesit-ensure-installed 'gomod)
(setq treesit-primary-parser (treesit-parser-create 'gomod)) (setq treesit-primary-parser (treesit-parser-create 'gomod))
;; Comments. ;; Comments.
@ -672,7 +685,7 @@ what the parent of the node would be if it were a node."
"Major mode for editing go.work files, powered by tree-sitter." "Major mode for editing go.work files, powered by tree-sitter."
:group 'go :group 'go
(when (treesit-ready-p 'gowork) (when (treesit-ensure-installed 'gowork)
(setq treesit-primary-parser (treesit-parser-create 'gowork)) (setq treesit-primary-parser (treesit-parser-create 'gowork))
;; Comments. ;; Comments.

View file

@ -44,6 +44,15 @@
(eval-when-compile (require 'rx)) (eval-when-compile (require 'rx))
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(heex "https://github.com/phoenixframework/tree-sitter-heex" "v0.7.0")
t)
(add-to-list
'treesit-language-source-alist
'(elixir "https://github.com/elixir-lang/tree-sitter-elixir" "v0.3.3")
t)
(defgroup heex-ts nil (defgroup heex-ts nil
"Major mode for editing HEEx code." "Major mode for editing HEEx code."
:prefix "heex-ts-" :prefix "heex-ts-"
@ -162,7 +171,7 @@ Return nil if NODE is not a defun node or doesn't have a name."
"Major mode for editing HEEx, powered by tree-sitter." "Major mode for editing HEEx, powered by tree-sitter."
:group 'heex-ts :group 'heex-ts
(when (treesit-ready-p 'heex) (when (treesit-ensure-installed 'heex)
(setq treesit-primary-parser (treesit-parser-create 'heex)) (setq treesit-primary-parser (treesit-parser-create 'heex))
;; Comments ;; Comments

View file

@ -43,6 +43,15 @@
(require 'c-ts-common) ; For comment indent and filling. (require 'c-ts-common) ; For comment indent and filling.
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(java "https://github.com/tree-sitter/tree-sitter-java" "v0.23.5")
t)
(add-to-list
'treesit-language-source-alist
'(doxygen "https://github.com/tree-sitter-grammars/tree-sitter-doxygen" "v1.1.0")
t)
(defcustom java-ts-mode-indent-offset 4 (defcustom java-ts-mode-indent-offset 4
"Number of spaces for each indentation step in `java-ts-mode'." "Number of spaces for each indentation step in `java-ts-mode'."
:version "29.1" :version "29.1"
@ -385,7 +394,7 @@ Return nil if there is no name or if NODE is not a defun node."
:group 'java :group 'java
:syntax-table java-ts-mode--syntax-table :syntax-table java-ts-mode--syntax-table
(unless (treesit-ready-p 'java) (unless (treesit-ensure-installed 'java)
(error "Tree-sitter for Java isn't available")) (error "Tree-sitter for Java isn't available"))
(let ((primary-parser (treesit-parser-create 'java))) (let ((primary-parser (treesit-parser-create 'java)))
@ -480,7 +489,8 @@ Return nil if there is no name or if NODE is not a defun node."
java-ts-mode--font-lock-settings) java-ts-mode--font-lock-settings)
;; Inject doxygen parser for comment. ;; Inject doxygen parser for comment.
(when (and java-ts-mode-enable-doxygen (treesit-ready-p 'doxygen t)) (when (and java-ts-mode-enable-doxygen
(treesit-ensure-installed 'doxygen))
(setq-local treesit-primary-parser primary-parser) (setq-local treesit-primary-parser primary-parser)
(setq-local treesit-font-lock-settings (setq-local treesit-font-lock-settings
(append treesit-font-lock-settings (append treesit-font-lock-settings
@ -515,9 +525,6 @@ Return nil if there is no name or if NODE is not a defun node."
(if (treesit-ready-p 'java) (if (treesit-ready-p 'java)
(add-to-list 'auto-mode-alist '("\\.java\\'" . java-ts-mode))) (add-to-list 'auto-mode-alist '("\\.java\\'" . java-ts-mode)))
(when (and java-ts-mode-enable-doxygen (not (treesit-ready-p 'doxygen t)))
(message "Doxygen syntax highlighting can't be enabled, please install the language grammar."))
(provide 'java-ts-mode) (provide 'java-ts-mode)
;;; java-ts-mode.el ends here ;;; java-ts-mode.el ends here

View file

@ -3408,6 +3408,15 @@ This function is intended for use in `after-change-functions'."
;;; Tree sitter integration ;;; Tree sitter integration
(add-to-list
'treesit-language-source-alist
'(javascript "https://github.com/tree-sitter/tree-sitter-javascript" "v0.23.1")
t)
(add-to-list
'treesit-language-source-alist
'(jsdoc "https://github.com/tree-sitter/tree-sitter-jsdoc" "v0.23.2")
t)
(defun js--treesit-font-lock-compatibility-definition-feature () (defun js--treesit-font-lock-compatibility-definition-feature ()
"Font lock helper, to handle different releases of tree-sitter-javascript. "Font lock helper, to handle different releases of tree-sitter-javascript.
Check if a node type is available, then return the right font lock rules Check if a node type is available, then return the right font lock rules
@ -3973,7 +3982,7 @@ See `treesit-thing-settings' for more information.")
\\<js-ts-mode-map>" \\<js-ts-mode-map>"
:group 'js :group 'js
:syntax-table js-mode-syntax-table :syntax-table js-mode-syntax-table
(when (treesit-ready-p 'javascript) (when (treesit-ensure-installed 'javascript)
;; Borrowed from `js-mode'. ;; Borrowed from `js-mode'.
(setq-local prettify-symbols-alist js--prettify-symbols-alist) (setq-local prettify-symbols-alist js--prettify-symbols-alist)
(setq-local parse-sexp-ignore-comments t) (setq-local parse-sexp-ignore-comments t)
@ -4004,7 +4013,7 @@ See `treesit-thing-settings' for more information.")
(setq-local treesit-font-lock-settings js--treesit-font-lock-settings) (setq-local treesit-font-lock-settings js--treesit-font-lock-settings)
(setq-local treesit-font-lock-feature-list js--treesit-font-lock-feature-list) (setq-local treesit-font-lock-feature-list js--treesit-font-lock-feature-list)
(when (treesit-ready-p 'jsdoc t) (when (treesit-ensure-installed 'jsdoc)
(setq-local treesit-range-settings (setq-local treesit-range-settings
(treesit-range-rules (treesit-range-rules
:embed 'jsdoc :embed 'jsdoc

View file

@ -40,6 +40,11 @@
(require 'rx) (require 'rx)
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(json "https://github.com/tree-sitter/tree-sitter-json" "v0.24.8")
t)
(defcustom json-ts-mode-indent-offset 2 (defcustom json-ts-mode-indent-offset 2
"Number of spaces for each indentation step in `json-ts-mode'." "Number of spaces for each indentation step in `json-ts-mode'."
:version "29.1" :version "29.1"
@ -128,7 +133,7 @@ Return nil if there is no name or if NODE is not a defun node."
:group 'json :group 'json
:syntax-table json-ts-mode--syntax-table :syntax-table json-ts-mode--syntax-table
(unless (treesit-ready-p 'json) (unless (treesit-ensure-installed 'json)
(error "Tree-sitter for JSON isn't available")) (error "Tree-sitter for JSON isn't available"))
(setq treesit-primary-parser (treesit-parser-create 'json)) (setq treesit-primary-parser (treesit-parser-create 'json))

View file

@ -48,6 +48,11 @@
(eval-when-compile (eval-when-compile
(require 'rx)) (require 'rx))
(add-to-list
'treesit-language-source-alist
'(lua "https://github.com/tree-sitter-grammars/tree-sitter-lua" "v0.3.0")
t)
(defgroup lua-ts nil (defgroup lua-ts nil
"Major mode for editing Lua files." "Major mode for editing Lua files."
:prefix "lua-ts-" :prefix "lua-ts-"
@ -661,7 +666,7 @@ Calls REPORT-FN directly."
:syntax-table lua-ts--syntax-table :syntax-table lua-ts--syntax-table
(use-local-map lua-ts-mode-map) (use-local-map lua-ts-mode-map)
(when (treesit-ready-p 'lua) (when (treesit-ensure-installed 'lua)
(setq treesit-primary-parser (treesit-parser-create 'lua)) (setq treesit-primary-parser (treesit-parser-create 'lua))
;; Comments. ;; Comments.

View file

@ -81,23 +81,26 @@
;;; Install treesitter language parsers ;;; Install treesitter language parsers
(defvar php-ts-mode--language-source-alist (defvar php-ts-mode--language-source-alist
'((php . ("https://github.com/tree-sitter/tree-sitter-php" "v0.23.11" "php/src")) '((php "https://github.com/tree-sitter/tree-sitter-php" "v0.23.11" "php/src")
(phpdoc . ("https://github.com/claytonrcarter/tree-sitter-phpdoc")) (phpdoc "https://github.com/claytonrcarter/tree-sitter-phpdoc")
(html . ("https://github.com/tree-sitter/tree-sitter-html" "v0.23.0")) (html "https://github.com/tree-sitter/tree-sitter-html" "v0.23.2")
(javascript . ("https://github.com/tree-sitter/tree-sitter-javascript" "v0.23.0")) (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "v0.23.1")
(jsdoc . ("https://github.com/tree-sitter/tree-sitter-jsdoc" "v0.23.0")) (jsdoc "https://github.com/tree-sitter/tree-sitter-jsdoc" "v0.23.2")
(css . ("https://github.com/tree-sitter/tree-sitter-css" "v0.23.0"))) (css "https://github.com/tree-sitter/tree-sitter-css" "v0.23.1"))
"Treesitter language parsers required by `php-ts-mode'. "Treesitter language parsers required by `php-ts-mode'.
You can customize this variable if you want to stick to a specific You can customize `treesit-language-source-alist' if you want
commit and/or use different parsers.") to stick to a specific commit and/or use different parsers.")
(setq treesit-language-source-alist
(append treesit-language-source-alist
php-ts-mode--language-source-alist))
(defun php-ts-mode-install-parsers () (defun php-ts-mode-install-parsers ()
"Install all the required treesitter parsers. "Install all the required treesitter parsers.
`php-ts-mode--language-source-alist' defines which parsers to install." `php-ts-mode--language-source-alist' defines which parsers to install."
(interactive) (interactive)
(let ((treesit-language-source-alist php-ts-mode--language-source-alist))
(dolist (item php-ts-mode--language-source-alist) (dolist (item php-ts-mode--language-source-alist)
(treesit-install-language-grammar (car item))))) (treesit-install-language-grammar (car item))))
;;; Custom variables ;;; Custom variables
@ -1384,12 +1387,12 @@ Depends on `c-ts-common-comment-setup'."
:syntax-table php-ts-mode--syntax-table :syntax-table php-ts-mode--syntax-table
(if (not (and (if (not (and
(treesit-ready-p 'php) (treesit-ensure-installed 'php)
(treesit-ready-p 'phpdoc) (treesit-ensure-installed 'phpdoc)
(treesit-ready-p 'html) (treesit-ensure-installed 'html)
(treesit-ready-p 'javascript) (treesit-ensure-installed 'javascript)
(treesit-ready-p 'jsdoc) (treesit-ensure-installed 'jsdoc)
(treesit-ready-p 'css))) (treesit-ensure-installed 'css)))
(error "Tree-sitter for PHP isn't (error "Tree-sitter for PHP isn't
available. You can install the parsers with M-x available. You can install the parsers with M-x
`php-ts-mode-install-parsers'") `php-ts-mode-install-parsers'")

View file

@ -123,6 +123,11 @@
(require 'ruby-mode) (require 'ruby-mode)
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(ruby "https://github.com/tree-sitter/tree-sitter-ruby" "v0.23.1")
t)
(defgroup ruby-ts nil (defgroup ruby-ts nil
"Major mode for editing Ruby code." "Major mode for editing Ruby code."
:prefix "ruby-ts-" :prefix "ruby-ts-"
@ -1155,7 +1160,7 @@ leading double colon is not added."
:group 'ruby :group 'ruby
:syntax-table ruby-mode-syntax-table :syntax-table ruby-mode-syntax-table
(unless (treesit-ready-p 'ruby) (unless (treesit-ensure-installed 'ruby)
(error "Tree-sitter for Ruby isn't available")) (error "Tree-sitter for Ruby isn't available"))
(setq treesit-primary-parser (treesit-parser-create 'ruby)) (setq treesit-primary-parser (treesit-parser-create 'ruby))

View file

@ -41,6 +41,11 @@
(require 'c-ts-common) ; For comment indent and filling. (require 'c-ts-common) ; For comment indent and filling.
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(rust "https://github.com/tree-sitter/tree-sitter-rust" "v0.23.2")
t)
(defcustom rust-ts-mode-indent-offset 4 (defcustom rust-ts-mode-indent-offset 4
"Number of spaces for each indentation step in `rust-ts-mode'." "Number of spaces for each indentation step in `rust-ts-mode'."
:version "29.1" :version "29.1"
@ -545,7 +550,7 @@ See `prettify-symbols-compose-predicate'."
:group 'rust :group 'rust
:syntax-table rust-ts-mode--syntax-table :syntax-table rust-ts-mode--syntax-table
(when (treesit-ready-p 'rust) (when (treesit-ensure-installed 'rust)
(setq treesit-primary-parser (treesit-parser-create 'rust)) (setq treesit-primary-parser (treesit-parser-create 'rust))
;; Syntax. ;; Syntax.

View file

@ -1630,7 +1630,7 @@ with your script for an edit-interpret-debug cycle."
This mode automatically falls back to `sh-mode' if the buffer is This mode automatically falls back to `sh-mode' if the buffer is
not written in Bash or sh." not written in Bash or sh."
:syntax-table sh-mode-syntax-table :syntax-table sh-mode-syntax-table
(when (treesit-ready-p 'bash) (when (treesit-ensure-installed 'bash)
(sh-set-shell "bash" nil nil) (sh-set-shell "bash" nil nil)
(add-hook 'flymake-diagnostic-functions #'sh-shellcheck-flymake nil t) (add-hook 'flymake-diagnostic-functions #'sh-shellcheck-flymake nil t)
(add-hook 'hack-local-variables-hook (add-hook 'hack-local-variables-hook
@ -3312,6 +3312,11 @@ member of `flymake-diagnostic-functions'."
;;; Tree-sitter font-lock ;;; Tree-sitter font-lock
(add-to-list
'treesit-language-source-alist
'(bash "https://github.com/tree-sitter/tree-sitter-bash" "v0.23.3")
t)
(defvar sh-mode--treesit-operators (defvar sh-mode--treesit-operators
'("|" "|&" "||" "&&" ">" ">>" "<" "<<" "<<-" "<<<" "==" "!=" ";&" ";;&") '("|" "|&" "||" "&&" ">" ">>" "<" "<<" "<<-" "<<<" "==" "!=" ";&" ";;&")
"A list of `sh-mode' operators to fontify.") "A list of `sh-mode' operators to fontify.")

View file

@ -42,6 +42,19 @@
(require 'c-ts-common) ; For comment indent and filling. (require 'c-ts-common) ; For comment indent and filling.
(treesit-declare-unavailable-functions) (treesit-declare-unavailable-functions)
(add-to-list
'treesit-language-source-alist
'(typescript
"https://github.com/tree-sitter/tree-sitter-typescript" "v0.23.2"
"typescript/src")
t)
(add-to-list
'treesit-language-source-alist
'(tsx
"https://github.com/tree-sitter/tree-sitter-typescript" "v0.23.2"
"tsx/src")
t)
(defcustom typescript-ts-mode-indent-offset 2 (defcustom typescript-ts-mode-indent-offset 2
"Number of spaces for each indentation step in `typescript-ts-mode'." "Number of spaces for each indentation step in `typescript-ts-mode'."
:version "29.1" :version "29.1"
@ -608,7 +621,7 @@ This mode is intended to be inherited by concrete major modes."
:group 'typescript :group 'typescript
:syntax-table typescript-ts-mode--syntax-table :syntax-table typescript-ts-mode--syntax-table
(when (treesit-ready-p 'typescript) (when (treesit-ensure-installed 'typescript)
(setq treesit-primary-parser (treesit-parser-create 'typescript)) (setq treesit-primary-parser (treesit-parser-create 'typescript))
;; Indent. ;; Indent.
@ -646,7 +659,7 @@ at least 3 (which is the default value)."
:group 'typescript :group 'typescript
:syntax-table typescript-ts-mode--syntax-table :syntax-table typescript-ts-mode--syntax-table
(when (treesit-ready-p 'tsx) (when (treesit-ensure-installed 'tsx)
(setq treesit-primary-parser (treesit-parser-create 'tsx)) (setq treesit-primary-parser (treesit-parser-create 'tsx))
;; Comments. ;; Comments.

View file

@ -1341,6 +1341,11 @@ for determining whether point is within a selector."
;;; Tree-sitter ;;; Tree-sitter
(add-to-list
'treesit-language-source-alist
'(css "https://github.com/tree-sitter/tree-sitter-css" "v0.23.1")
t)
(defvar css-ts-mode-map (copy-keymap css-mode-map) (defvar css-ts-mode-map (copy-keymap css-mode-map)
"Keymap used in `css-ts-mode'.") "Keymap used in `css-ts-mode'.")
@ -1884,7 +1889,7 @@ can also be used to fill comments.
\\{css-mode-map}" \\{css-mode-map}"
:syntax-table css-mode-syntax-table :syntax-table css-mode-syntax-table
(when (treesit-ready-p 'css) (when (treesit-ensure-installed 'css)
;; Borrowed from `css-mode'. ;; Borrowed from `css-mode'.
(setq-local syntax-propertize-function (setq-local syntax-propertize-function
css-syntax-propertize-function) css-syntax-propertize-function)

View file

@ -43,6 +43,11 @@
(declare-function treesit-node-type "treesit.c") (declare-function treesit-node-type "treesit.c")
(declare-function treesit-search-subtree "treesit.c") (declare-function treesit-search-subtree "treesit.c")
(add-to-list
'treesit-language-source-alist
'(html "https://github.com/tree-sitter/tree-sitter-html" "v0.23.2")
t)
(defcustom html-ts-mode-indent-offset 2 (defcustom html-ts-mode-indent-offset 2
"Number of spaces for each indentation step in `html-ts-mode'." "Number of spaces for each indentation step in `html-ts-mode'."
:version "29.1" :version "29.1"
@ -144,7 +149,7 @@ Return nil if there is no name or if NODE is not a defun node."
"Major mode for editing Html, powered by tree-sitter." "Major mode for editing Html, powered by tree-sitter."
:group 'html :group 'html
(unless (treesit-ready-p 'html t) (unless (treesit-ensure-installed 'html)
(error "Tree-sitter for HTML isn't available")) (error "Tree-sitter for HTML isn't available"))
(setq treesit-primary-parser (treesit-parser-create 'html)) (setq treesit-primary-parser (treesit-parser-create 'html))

View file

@ -34,6 +34,19 @@
(declare-function treesit-node-type "treesit.c") (declare-function treesit-node-type "treesit.c")
(declare-function treesit-parser-create "treesit.c") (declare-function treesit-parser-create "treesit.c")
(add-to-list
'treesit-language-source-alist
'(markdown
"https://github.com/tree-sitter-grammars/tree-sitter-markdown" "v0.4.1"
"tree-sitter-markdown/src")
t)
(add-to-list
'treesit-language-source-alist
'(markdown-inline
"https://github.com/tree-sitter-grammars/tree-sitter-markdown" "v0.4.1"
"tree-sitter-markdown-inline/src")
t)
;;; Helper functions ;;; Helper functions
(defvar markdown-ts--code-block-language-map (defvar markdown-ts--code-block-language-map
@ -304,7 +317,8 @@ the same features enabled in MODE."
`(("Headings" markdown-ts-imenu-node-p nil markdown-ts-imenu-name-function))) `(("Headings" markdown-ts-imenu-node-p nil markdown-ts-imenu-name-function)))
(setq-local treesit-outline-predicate "section") (setq-local treesit-outline-predicate "section")
(when (treesit-ready-p 'markdown) (when (and (treesit-ensure-installed 'markdown)
(treesit-ensure-installed 'markdown-inline))
(treesit-parser-create 'markdown-inline) (treesit-parser-create 'markdown-inline)
(treesit-parser-create 'markdown) (treesit-parser-create 'markdown)
(markdown-ts-setup))) (markdown-ts-setup)))

View file

@ -65,21 +65,24 @@
;; In a multi-language major mode can be useful to have an "installer" to ;; In a multi-language major mode can be useful to have an "installer" to
;; simplify the installation of the grammars supported by the major-mode. ;; simplify the installation of the grammars supported by the major-mode.
(defvar mhtml-ts-mode--language-source-alist (defvar mhtml-ts-mode--language-source-alist
'((html . ("https://github.com/tree-sitter/tree-sitter-html" "v0.23.2")) '((html "https://github.com/tree-sitter/tree-sitter-html" "v0.23.2")
(javascript . ("https://github.com/tree-sitter/tree-sitter-javascript" "v0.23.1")) (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "v0.23.1")
(jsdoc . ("https://github.com/tree-sitter/tree-sitter-jsdoc" "v0.23.2")) (jsdoc "https://github.com/tree-sitter/tree-sitter-jsdoc" "v0.23.2")
(css . ("https://github.com/tree-sitter/tree-sitter-css" "v0.23.1"))) (css "https://github.com/tree-sitter/tree-sitter-css" "v0.23.1"))
"Treesitter language parsers required by `mhtml-ts-mode'. "Treesitter language parsers required by `mhtml-ts-mode'.
You can customize this variable if you want to stick to a specific You can customize `treesit-language-source-alist' if you want
commit and/or use different parsers.") to stick to a specific commit and/or use different parsers.")
(setq treesit-language-source-alist
(append treesit-language-source-alist
mhtml-ts-mode--language-source-alist))
(defun mhtml-ts-mode-install-parsers () (defun mhtml-ts-mode-install-parsers ()
"Install all the required treesitter parsers. "Install all the required treesitter parsers.
`mhtml-ts-mode--language-source-alist' defines which parsers to install." `mhtml-ts-mode--language-source-alist' defines which parsers to install."
(interactive) (interactive)
(let ((treesit-language-source-alist mhtml-ts-mode--language-source-alist))
(dolist (item mhtml-ts-mode--language-source-alist) (dolist (item mhtml-ts-mode--language-source-alist)
(treesit-install-language-grammar (car item))))) (treesit-install-language-grammar (car item))))
;;; Custom variables ;;; Custom variables
@ -432,9 +435,9 @@ Calls REPORT-FN directly. Requires tidy."
"Major mode for editing HTML with embedded JavaScript and CSS. "Major mode for editing HTML with embedded JavaScript and CSS.
Powered by tree-sitter." Powered by tree-sitter."
(if (not (and (if (not (and
(treesit-ready-p 'html t) (treesit-ensure-installed 'html)
(treesit-ready-p 'javascript t) (treesit-ensure-installed 'javascript)
(treesit-ready-p 'css t))) (treesit-ensure-installed 'css)))
(error "Tree-sitter parsers for HTML isn't available. You can (error "Tree-sitter parsers for HTML isn't available. You can
install the parsers with M-x `mhtml-ts-mode-install-parsers'") install the parsers with M-x `mhtml-ts-mode-install-parsers'")
@ -487,7 +490,7 @@ Powered by tree-sitter."
;; jsdoc is not mandatory for js-ts-mode, so we respect this by ;; jsdoc is not mandatory for js-ts-mode, so we respect this by
;; adding jsdoc range rules only when jsdoc is available. ;; adding jsdoc range rules only when jsdoc is available.
(when (treesit-ready-p 'jsdoc t) (when (treesit-ensure-installed 'jsdoc)
(setq-local treesit-range-settings (setq-local treesit-range-settings
(append treesit-range-settings (append treesit-range-settings
(treesit-range-rules (treesit-range-rules

View file

@ -36,6 +36,11 @@
(declare-function treesit-node-child "treesit.c") (declare-function treesit-node-child "treesit.c")
(declare-function treesit-node-child-by-field-name "treesit.c") (declare-function treesit-node-child-by-field-name "treesit.c")
(add-to-list
'treesit-language-source-alist
'(toml "https://github.com/tree-sitter-grammars/tree-sitter-toml" "v0.7.0")
t)
(defcustom toml-ts-mode-indent-offset 2 (defcustom toml-ts-mode-indent-offset 2
"Number of spaces for each indentation step in `toml-ts-mode'." "Number of spaces for each indentation step in `toml-ts-mode'."
:version "29.1" :version "29.1"
@ -123,7 +128,7 @@ Return nil if there is no name or if NODE is not a defun node."
:group 'toml-mode :group 'toml-mode
:syntax-table toml-ts-mode--syntax-table :syntax-table toml-ts-mode--syntax-table
(when (treesit-ready-p 'toml) (when (treesit-ensure-installed 'toml)
(setq treesit-primary-parser (treesit-parser-create 'toml)) (setq treesit-primary-parser (treesit-parser-create 'toml))
;; Comments ;; Comments

View file

@ -35,6 +35,11 @@
(declare-function treesit-node-type "treesit.c") (declare-function treesit-node-type "treesit.c")
(declare-function treesit-node-child-by-field-name "treesit.c") (declare-function treesit-node-child-by-field-name "treesit.c")
(add-to-list
'treesit-language-source-alist
'(yaml "https://github.com/tree-sitter-grammars/tree-sitter-yaml" "v0.7.0")
t)
(defvar yaml-ts-mode--syntax-table (defvar yaml-ts-mode--syntax-table
(let ((table (make-syntax-table))) (let ((table (make-syntax-table)))
(modify-syntax-entry ?# "<" table) (modify-syntax-entry ?# "<" table)
@ -162,7 +167,7 @@ Return nil if there is no name or if NODE is not a defun node."
:group 'yaml :group 'yaml
:syntax-table yaml-ts-mode--syntax-table :syntax-table yaml-ts-mode--syntax-table
(when (treesit-ready-p 'yaml) (when (treesit-ensure-installed 'yaml)
(setq treesit-primary-parser (treesit-parser-create 'yaml)) (setq treesit-primary-parser (treesit-parser-create 'yaml))
;; Comments. ;; Comments.

View file

@ -123,6 +123,8 @@ RUN make -j `nproc` bootstrap
RUN mkdir -p /root/.emacs.d/tree-sitter RUN mkdir -p /root/.emacs.d/tree-sitter
RUN git config --global http.sslverify "false" RUN git config --global http.sslverify "false"
# See https://github.com/emacs-tree-sitter/tree-sitter-langs/tree/master/repos # See https://github.com/emacs-tree-sitter/tree-sitter-langs/tree/master/repos
# The verified versions are generated by 'treesit-admin-verify-major-mode-queries`
# at the comments section in ts-mode files.
RUN src/emacs -Q --batch \ RUN src/emacs -Q --batch \
--eval \ --eval \
'(message "ABI min version %d max version %d" \ '(message "ABI min version %d max version %d" \
@ -130,27 +132,27 @@ RUN src/emacs -Q --batch \
--eval '(setq \ --eval '(setq \
treesit-extra-load-path (list "/root/.emacs.d/tree-sitter") \ treesit-extra-load-path (list "/root/.emacs.d/tree-sitter") \
treesit-language-source-alist \ treesit-language-source-alist \
(quote ((bash "https://github.com/tree-sitter/tree-sitter-bash") \ (quote ((bash "https://github.com/tree-sitter/tree-sitter-bash" "v0.23.3") \
(c "https://github.com/tree-sitter/tree-sitter-c") \ (c "https://github.com/tree-sitter/tree-sitter-c" "v0.23.4") \
(c-sharp "https://github.com/tree-sitter/tree-sitter-c-sharp") \ (c-sharp "https://github.com/tree-sitter/tree-sitter-c-sharp" "v0.23.1") \
(cpp "https://github.com/tree-sitter/tree-sitter-cpp") \ (cpp "https://github.com/tree-sitter/tree-sitter-cpp" "v0.23.4") \
(css "https://github.com/tree-sitter/tree-sitter-css") \ (css "https://github.com/tree-sitter/tree-sitter-css" "v0.23.1") \
(elixir "https://github.com/elixir-lang/tree-sitter-elixir") \ (elixir "https://github.com/elixir-lang/tree-sitter-elixir" "v0.3.3") \
(go "https://github.com/tree-sitter/tree-sitter-go") \ (go "https://github.com/tree-sitter/tree-sitter-go" "v0.23.4") \
(gomod "https://github.com/camdencheek/tree-sitter-go-mod") \ (gomod "https://github.com/camdencheek/tree-sitter-go-mod" "v1.1.0") \
(gowork "https://github.com/omertuc/tree-sitter-go-work") \ (gowork "https://github.com/omertuc/tree-sitter-go-work") \
(heex "https://github.com/phoenixframework/tree-sitter-heex") \ (heex "https://github.com/phoenixframework/tree-sitter-heex" "v0.7.0") \
(html "https://github.com/tree-sitter/tree-sitter-html") \ (html "https://github.com/tree-sitter/tree-sitter-html" "v0.23.2") \
(java "https://github.com/tree-sitter/tree-sitter-java") \ (java "https://github.com/tree-sitter/tree-sitter-java" "v0.23.5") \
(javascript "https://github.com/tree-sitter/tree-sitter-javascript") \ (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "v0.23.1") \
(jsdoc "https://github.com/tree-sitter/tree-sitter-jsdoc") \ (jsdoc "https://github.com/tree-sitter/tree-sitter-jsdoc" "v0.23.2") \
(json "https://github.com/tree-sitter/tree-sitter-json") \ (json "https://github.com/tree-sitter/tree-sitter-json" "v0.24.8") \
(lua "https://github.com/tree-sitter-grammars/tree-sitter-lua") \ (lua "https://github.com/tree-sitter-grammars/tree-sitter-lua" "v0.3.0") \
(python "https://github.com/tree-sitter/tree-sitter-python") \ (python "https://github.com/tree-sitter/tree-sitter-python" "v0.23.6") \
(ruby "https://github.com/tree-sitter/tree-sitter-ruby") \ (ruby "https://github.com/tree-sitter/tree-sitter-ruby" "v0.23.1") \
(rust "https://github.com/tree-sitter/tree-sitter-rust" "v0.23.3") \ (rust "https://github.com/tree-sitter/tree-sitter-rust" "v0.23.2") \
(tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src") \ (tsx "https://github.com/tree-sitter/tree-sitter-typescript" "v0.23.2" "tsx/src") \
(typescript "https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src"))))' \ (typescript "https://github.com/tree-sitter/tree-sitter-typescript" "v0.23.2" "typescript/src"))))' \
--eval '(dolist (lang (mapcar (quote car) treesit-language-source-alist)) \ --eval '(dolist (lang (mapcar (quote car) treesit-language-source-alist)) \
(treesit-install-language-grammar lang "/root/.emacs.d/tree-sitter"))' (treesit-install-language-grammar lang "/root/.emacs.d/tree-sitter"))'