diff --git a/modules/lang/cc/config.el b/modules/lang/cc/config.el index 0af20dedf..2400ba17d 100644 --- a/modules/lang/cc/config.el +++ b/modules/lang/cc/config.el @@ -30,9 +30,10 @@ This is ignored by ccls.") :hook (c-mode-common . rainbow-delimiters-mode) :init (when (modulep! +tree-sitter) - (set-tree-sitter! 'c-mode 'c-ts-mode 'c) - (set-tree-sitter! 'c++-mode 'c++-ts-mode 'cpp)) - + (set-tree-sitter! 'c-mode 'c-ts-mode + '((c :url "https://github.com/tree-sitter/tree-sitter-c"))) + (set-tree-sitter! 'c++-mode 'c++-ts-mode + '((cpp :url "https://github.com/tree-sitter/tree-sitter-cpp")))) :config (set-docsets! '(c-mode c-ts-mode) "C") (set-docsets! '(c++-mode c++-ts-mode) "C++" "Boost") @@ -114,7 +115,8 @@ This is ignored by ccls.") :init (when (and (modulep! +tree-sitter) (boundp 'cmake-ts-mode)) ; 29+ only - (set-tree-sitter! 'cmake-mode 'cmake-ts-mode 'cmake)) + (set-tree-sitter! 'cmake-mode 'cmake-ts-mode + '((cmake :url "https://github.com/uyha/tree-sitter-cmake")))) :config (set-docsets! '(cmake-mode cmake-ts-mode) "CMake") (set-popup-rule! "^\\*CMake Help\\*" :size 0.4 :ttl t) diff --git a/modules/lang/csharp/config.el b/modules/lang/csharp/config.el index 70a4a9884..1b0dccd3f 100644 --- a/modules/lang/csharp/config.el +++ b/modules/lang/csharp/config.el @@ -2,9 +2,13 @@ (use-package! csharp-mode :hook (csharp-mode . rainbow-delimiters-mode) + :defer t :init (when (modulep! +tree-sitter) - (set-tree-sitter! 'csharp-mode 'csharp-ts-mode 'c-sharp)) + (set-tree-sitter! 'csharp-mode 'csharp-ts-mode + '((c-sharp :url "https://github.com/tree-sitter/tree-sitter-c-sharp" + :rev "v0.23.1" + :commit "362a8a41b265056592a0c3771664a21d23a71392")))) :config (set-formatter! 'csharpier '("csharpier" "format" "--write-stdout") :modes '(csharp-mode csharp-ts-mode)) diff --git a/modules/lang/elixir/config.el b/modules/lang/elixir/config.el index 81bd247dd..18aff5df5 100644 --- a/modules/lang/elixir/config.el +++ b/modules/lang/elixir/config.el @@ -54,12 +54,15 @@ highlight-numbers-modelist))) -(use-package! elixir-ts-mode +(use-package! elixir-ts-mode ; 30.1+ only :when (modulep! +tree-sitter) - :when (fboundp 'elixir-ts-mode) ; 30.1+ only :defer t :init - (set-tree-sitter! 'elixir-mode 'elixir-ts-mode '(elixir heex)) + (set-tree-sitter! 'elixir-mode 'elixir-ts-mode + '((elixir :url "https://github.com/elixir-lang/tree-sitter-elixir" + :commit "02a6f7fd4be28dd94ee4dd2ca19cb777053ea74e") + (heex :url "https://github.com/phoenixframework/tree-sitter-heex" + :commit "f6b83f305a755cd49cf5f6a66b2b789be93dc7b9"))) :config (+elixir-common-config 'elixir-ts-mode)) diff --git a/modules/lang/go/config.el b/modules/lang/go/config.el index 0d5c468f1..387c1ee97 100644 --- a/modules/lang/go/config.el +++ b/modules/lang/go/config.el @@ -53,7 +53,13 @@ :when (fboundp 'go-ts-mode) ; 31.1+ only :defer t :init - (set-tree-sitter! 'go-mode 'go-ts-mode '(go gomod gowork)) + (set-tree-sitter! 'go-mode 'go-ts-mode + '((go :url "https://github.com/tree-sitter/tree-sitter-go" + :commit "12fe553fdaaa7449f764bc876fd777704d4fb752") + (gomod :url "https://github.com/camdencheek/tree-sitter-go-mod" + :commit "3b01edce2b9ea6766ca19328d1850e456fde3103") + (gowork :url "https://github.com/omertuc/tree-sitter-go-work" + :commit "949a8a470559543857a62102c84700d291fc984c"))) :config (+go-common-config 'go-ts-mode)) diff --git a/modules/lang/janet/config.el b/modules/lang/janet/config.el index fa49da13a..f1564a68e 100644 --- a/modules/lang/janet/config.el +++ b/modules/lang/janet/config.el @@ -29,5 +29,5 @@ :defer t :init (set-tree-sitter! 'janet-mode 'janet-ts-mode - `(janet-simple :url "https://github.com/sogaiu/tree-sitter-janet-simple" - :cc ,(if (featurep :system 'windows) "gcc.exe")))) + `((janet-simple :url "https://github.com/sogaiu/tree-sitter-janet-simple" + :cc ,(if (featurep :system 'windows) "gcc.exe"))))) diff --git a/modules/lang/java/config.el b/modules/lang/java/config.el index 1dab9a892..e6a983a89 100644 --- a/modules/lang/java/config.el +++ b/modules/lang/java/config.el @@ -34,12 +34,15 @@ If the depth is 2, the first two directories are removed: net.lissner.game.") ;; ;;; Common packages -(use-package! java-ts-mode +(use-package! java-ts-mode ; 29.1+ only :when (modulep! +tree-sitter) - :when (fboundp 'java-ts-mode) ; 29.1+ only :defer t :init - (set-tree-sitter! 'java-mode 'java-ts-mode '(java doxygen))) + (set-tree-sitter! 'java-mode 'java-ts-mode + '((java :url "https://github.com/tree-sitter/tree-sitter-java" + :commit "94703d5a6bed02b98e438d7cad1136c01a60ba2c") + (doxygen :url "https://github.com/tree-sitter-grammars/tree-sitter-doxygen" + :commit "1e28054cb5be80d5febac082706225e42eff14e6")))) (use-package! android-mode diff --git a/modules/lang/javascript/config.el b/modules/lang/javascript/config.el index 4496d98e0..835bb0c10 100644 --- a/modules/lang/javascript/config.el +++ b/modules/lang/javascript/config.el @@ -52,12 +52,17 @@ (+javascript-common-config 'js-mode)) -(use-package! js-ts-mode +(use-package! js-ts-mode ; 29.1+ only :when (modulep! +tree-sitter) - :when (fboundp 'js-ts-mode) ; 29.1+ only :defer t :init - (set-tree-sitter! 'js-mode 'js-ts-mode 'javascript) + (set-tree-sitter! 'js-mode 'js-ts-mode + '((javascript :url "https://github.com/tree-sitter/tree-sitter-javascript" + :rev "v0.23.0" + :commit "108b2d4d17a04356a340aea809e4dd5b801eb40d") + (jsdoc :url "https://github.com/tree-sitter/tree-sitter-jsdoc" + :rev "v0.23.0" + :commit "b253abf68a73217b7a52c0ec254f4b6a7bb86665"))) (+javascript-common-config 'js-ts-mode)) @@ -68,12 +73,14 @@ (+javascript-common-config 'typescript-mode)) -(use-package! typescript-ts-mode +(use-package! typescript-ts-mode ; 29.1+ only :when (modulep! +tree-sitter) - :when (fboundp 'typescript-ts-mode) ; 29.1+ only :mode "\\.ts\\'" :init - (set-tree-sitter! 'typescript-mode 'typescript-ts-mode 'typescript) + (set-tree-sitter! 'typescript-mode 'typescript-ts-mode + '((typescript :url "https://github.com/tree-sitter/tree-sitter-typescript" + :commit "8e13e1db35b941fc57f2bd2dd4628180448c17d5" + :source-dir "typescript/src"))) :config (+javascript-common-config 'typescript-ts-mode)) diff --git a/modules/lang/json/config.el b/modules/lang/json/config.el index 88d6889b4..c4b56b82d 100644 --- a/modules/lang/json/config.el +++ b/modules/lang/json/config.el @@ -20,12 +20,13 @@ "f" #'json-mode-beautify)) -(use-package! json-ts-mode +(use-package! json-ts-mode ; 29.1+ only :when (modulep! +tree-sitter) - :when (fboundp 'json-ts-mode) ; 29.1+ only :defer t :init - (set-tree-sitter! 'json-mode 'json-ts-mode 'json) + (set-tree-sitter! 'json-mode 'json-ts-mode + '((json :url "https://github.com/tree-sitter/tree-sitter-json" + :commit "4d770d31f732d50d3ec373865822fbe659e47c75"))) :config (when (modulep! +lsp) (add-hook 'json-ts-mode-local-vars-hook #'lsp! 'append))) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index 43ae499b3..99850f6f1 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -48,7 +48,8 @@ :when (modulep! +tree-sitter) :defer t :init - (set-tree-sitter! 'julia-mode 'julia-ts-mode 'julia) + (set-tree-sitter! 'julia-mode 'julia-ts-mode + '((julia :url "https://github.com/tree-sitter/tree-sitter-julia"))) :config (when (modulep! +lsp) (add-hook 'julia-ts-mode-local-vars-hook #'lsp! 'append))) diff --git a/modules/lang/lua/config.el b/modules/lang/lua/config.el index f082eceb3..f176fddbc 100644 --- a/modules/lang/lua/config.el +++ b/modules/lang/lua/config.el @@ -28,10 +28,11 @@ (use-package! lua-ts-mode :when (modulep! +tree-sitter) - :when (fboundp 'lua-ts-mode) ; 30.1+ only :defer t :init - (set-tree-sitter! 'lua-mode 'lua-ts-mode 'lua) + (set-tree-sitter! 'lua-mode 'lua-ts-mode + '((lua :url "https://github.com/tree-sitter-grammars/tree-sitter-lua" + :commit "db16e76558122e834ee214c8dc755b4a3edc82a9"))) :config (+lua-common-config 'lua-ts-mode)) diff --git a/modules/lang/markdown/config.el b/modules/lang/markdown/config.el index f1e5dde26..782182c33 100644 --- a/modules/lang/markdown/config.el +++ b/modules/lang/markdown/config.el @@ -126,9 +126,8 @@ capture, the end position, and the output buffer.") :desc "GFM checkbox" "x" #'markdown-toggle-gfm-checkbox))) -(use-package! markdown-ts-mode +(use-package! markdown-ts-mode ; 31+ only :when (modulep! +tree-sitter) - :when (fboundp 'markdown-ts-mode) :defer t :init (set-tree-sitter! 'markdown-mode 'markdown-ts-mode '(markdown markdown-inline))) diff --git a/modules/lang/php/config.el b/modules/lang/php/config.el index 40902debc..e15c0bfbb 100644 --- a/modules/lang/php/config.el +++ b/modules/lang/php/config.el @@ -79,10 +79,17 @@ (use-package! php-ts-mode :when (modulep! +tree-sitter) - :when (fboundp 'php-ts-mode) ; 30.1+ only :defer t :init - (set-tree-sitter! 'php-mode 'php-ts-mode '(php phpdoc)) + (set-tree-sitter! 'php-mode 'php-ts-mode + '((php :url "https://github.com/tree-sitter/tree-sitter-php" + :rev "v0.23.11" + :commit "f7cf7348737d8cff1b13407a0bfedce02ee7b046" + :source-dir "php/src") + (phpdoc :url "https://github.com/claytonrcarter/tree-sitter-phpdoc" + :commit "03bb10330704b0b371b044e937d5cc7cd40b4999") + html css ; requires :lang (web +tree-sitter) + javascript jsdoc)) ; requires :lang (javascript +tree-sitter) :config (+php-common-config 'php-ts-mode)) diff --git a/modules/lang/php/doctor.el b/modules/lang/php/doctor.el index 426927e54..e72e73fcc 100644 --- a/modules/lang/php/doctor.el +++ b/modules/lang/php/doctor.el @@ -5,13 +5,15 @@ (modulep! :tools lsp)) "This module requires (:tools lsp)") -(assert! (or (not (modulep! +tree-sitter)) - (modulep! :tools tree-sitter)) - "This module requires (:tools tree-sitter)") - -(assert! (or (not (modulep! +tree-sitter)) - (fboundp 'php-ts-mode)) - "Can't find `php-ts-mode'; Emacs 30.1+ is required") +(when (modulep! +tree-sitter) + (assert! (modulep! :tools tree-sitter) + "This module requires (:tools tree-sitter)") + (assert! (fboundp 'php-ts-mode) + "Can't find `php-ts-mode'; Emacs 30.1+ is required") + (unless (modulep! :lang javascript +tree-sitter) + (error! "(:lang (javascript +tree-sitter)) required, but not enabled")) + (unless (modulep! :lang web +tree-sitter) + (error! "(:lang (web +tree-sitter)) required, but not enabled"))) (unless (executable-find "php") (warn! "Couldn't find php in your PATH")) diff --git a/modules/lang/python/config.el b/modules/lang/python/config.el index 44360d038..09956a8c8 100644 --- a/modules/lang/python/config.el +++ b/modules/lang/python/config.el @@ -20,7 +20,9 @@ python-indent-guess-indent-offset-verbose nil) (when (modulep! +tree-sitter) - (set-tree-sitter! 'python-mode 'python-ts-mode 'python)) + (set-tree-sitter! 'python-mode 'python-ts-mode + '((python :url "https://github.com/tree-sitter/tree-sitter-python" + :commit "bffb65a8cfe4e46290331dfef0dbf0ef3679de11")))) :config ;; HACK: `python-base-mode' (and `python-ts-mode') don't exist on pre-29 diff --git a/modules/lang/ruby/config.el b/modules/lang/ruby/config.el index 0ef6d3e66..f68d5d95e 100644 --- a/modules/lang/ruby/config.el +++ b/modules/lang/ruby/config.el @@ -36,12 +36,13 @@ "{" #'ruby-toggle-block)) -(use-package! ruby-ts-mode +(use-package! ruby-ts-mode ; 29.1+ only :when (modulep! +tree-sitter) - :when (fboundp 'ruby-ts-mode) ; 29.1+ only :defer t :init - (set-tree-sitter! 'ruby-mode 'ruby-ts-mode 'ruby) + (set-tree-sitter! 'ruby-mode 'ruby-ts-mode + '((ruby :url "https://github.com/tree-sitter/tree-sitter-ruby" + :commit "71bd32fb7607035768799732addba884a37a6210"))) :config (set-electric! 'ruby-ts-mode :words '("else" "end" "elsif")) (set-repl-handler! 'ruby-ts-mode #'inf-ruby) diff --git a/modules/lang/rust/config.el b/modules/lang/rust/config.el index 283e5744e..36f1774b6 100644 --- a/modules/lang/rust/config.el +++ b/modules/lang/rust/config.el @@ -33,12 +33,16 @@ (require 'rustic-mode nil t))) -(use-package! rust-ts-mode +(use-package! rust-ts-mode ; 29.1+ only :when (modulep! +tree-sitter) - :when (fboundp 'rust-ts-mode) ; 29.1+ only :defer t :init - (set-tree-sitter! 'rust-mode 'rust-ts-mode 'rust) + (set-tree-sitter! 'rust-mode 'rust-ts-mode + `((rust :url "https://github.com/tree-sitter/tree-sitter-rust" + :commit ,(if (and (treesit-available-p) + (< (treesit-library-abi-version) 15)) + "1f63b33efee17e833e0ea29266dd3d713e27e321" + "18b0515fca567f5a10aee9978c6d2640e878671a")))) (add-to-list 'major-mode-remap-defaults '(rust-mode . rust-ts-mode) t)) diff --git a/modules/lang/web/+css.el b/modules/lang/web/+css.el index afb4400a7..bb96cd966 100644 --- a/modules/lang/web/+css.el +++ b/modules/lang/web/+css.el @@ -74,9 +74,11 @@ If set to `nil', disable all the above behaviors.") :append #'lsp!)) -(use-package! css-ts-mode +(use-package! css-ts-mode ; 29.1+ only :when (modulep! +tree-sitter) - :when (fboundp 'css-ts-mode) ; 29.1+ only :defer t :init - (set-tree-sitter! 'css-mode 'css-ts-mode 'css)) + (set-tree-sitter! 'css-mode 'css-ts-mode + '((css :url "https://github.com/tree-sitter/tree-sitter-css" + :rev "v0.23.0" + :commit "6a442a3cf461b0ce275339e5afa178693484c927")))) diff --git a/modules/lang/web/+html.el b/modules/lang/web/+html.el index 00417a42d..69f63a42a 100644 --- a/modules/lang/web/+html.el +++ b/modules/lang/web/+html.el @@ -168,17 +168,18 @@ :append #'lsp!)) -(use-package! html-ts-mode +(use-package! html-ts-mode ; 30.1+ only :when (modulep! +tree-sitter) - :when (fboundp 'html-ts-mode) ; 30.1+ only :defer t :init - (set-tree-sitter! 'html-mode 'html-ts-mode 'html)) + (set-tree-sitter! 'html-mode 'html-ts-mode + '((html :url "https://github.com/tree-sitter/tree-sitter-html" + :rev "v0.23.0" + :commit "6a442a3cf461b0ce275339e5afa178693484c927")))) -(use-package! mhtml-ts-mode +(use-package! mhtml-ts-mode ; 31+ only :when (modulep! +tree-sitter) - :when (fboundp 'mhtml-ts-mode) ; 31+ only :defer t :init (set-tree-sitter! 'mhtml-mode 'mhtml-ts-mode 'html)) diff --git a/modules/lang/yaml/config.el b/modules/lang/yaml/config.el index 9f139313a..f6e795a68 100644 --- a/modules/lang/yaml/config.el +++ b/modules/lang/yaml/config.el @@ -8,11 +8,13 @@ (setq-hook! 'yaml-mode-hook tab-width yaml-indent-offset)) -(use-package! yaml-ts-mode +(use-package! yaml-ts-mode ; 29.1+ only :when (modulep! +tree-sitter) - :when (fboundp 'yaml-ts-mode) ; 29.1+ only + :defer t :init - (set-tree-sitter! 'yaml-mode 'yaml-ts-mode 'yaml) + (set-tree-sitter! 'yaml-mode 'yaml-ts-mode + '((yaml :url "https://github.com/tree-sitter-grammars/tree-sitter-yaml" + :commit "b733d3f5f5005890f324333dd57e1f0badec5c87"))) :config (when (modulep! +lsp) (add-hook 'yaml-ts-mode-local-vars-hook #'lsp! 'append))) diff --git a/modules/tools/docker/config.el b/modules/tools/docker/config.el index 6029a6c3c..b6f67b847 100644 --- a/modules/tools/docker/config.el +++ b/modules/tools/docker/config.el @@ -10,7 +10,8 @@ (use-package! dockerfile-ts-mode :when (modulep! +tree-sitter) - :when (fboundp 'dockerfile-ts-mode) ; 29.1+ only :defer t :init - (set-tree-sitter! 'dockerfile-mode 'dockerfile-ts-mode 'dockerfile)) + (set-tree-sitter! 'dockerfile-mode 'dockerfile-ts-mode + '((dockerfile :url "https://github.com/camdencheek/tree-sitter-dockerfile" + :commit "087daa20438a6cc01fa5e6fe6906d77c869d19fe")))) diff --git a/modules/tools/tree-sitter/config.el b/modules/tools/tree-sitter/config.el index 486f9db06..09845c365 100644 --- a/modules/tools/tree-sitter/config.el +++ b/modules/tools/tree-sitter/config.el @@ -45,7 +45,7 @@ (if-let* ((ts (get mode '+tree-sitter)) (fallback-mode (car ts))) (cond ((not (fboundp mode)) - (message "Couldn't find %S, falling back to %S" mode fallback-mode) + (message "Couldn't find `%S', falling back to `%S'" mode fallback-mode) fallback-mode) ((and (or (eq treesit-enabled-modes t) (memq fallback-mode treesit-enabled-modes))